doufei2194 2014-04-24 19:06
浏览 65
已采纳

正确使用sqlite3.BusyFunc使用go?

I am trying to execute some insert queries one query per goroutine (see code from emulating multiple requests to sqlite database as goroutine causes random panic) but most of failed with error: The database file is locked.

I found following from http://godoc.org/code.google.com/p/go-sqlite/go1/sqlite3#BusyFunc :

type BusyFunc func(count int) (retry bool)
BusyFunc is a callback function invoked by SQLite when it is unable to acquire a lock on a table. Count is the number of times that the callback has been invoked for this locking event so far. If the function returns false, then the operation is aborted. Otherwise, the function should block for a while before returning true and letting SQLite make another locking attempt.

I inserted following code:

sqlite3.BusyFunc(func(counted int) (bool) { 
    if counted > 10 { 
        return false 
    } else { 
        return true
    }
})

but it returned sqlite3.BusyFunc(func literal) evaluated but not used. Am I missing something?

  • 写回答

1条回答 默认 最新

  • dousigan0499 2014-04-24 19:37
    关注

    sqlite3.BusyFunc is a type. What you're doing is converting a function into that type, as a result you get a function of that type. Instead, you have to register your function with:

    func (c *Conn) BusyFunc(f BusyFunc) (prev BusyFunc)
    

    Basically changing "sqlite3" for the name of the conn handle should do the job, just grab the return value.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题