```go
package dao
……
func DbConn() (*sql.DB,error) {
db, err := sql.Open("sqlite3", sqlite_db_path)
if err != nil {
panic("conn db err:")
}
return db,nil
}
```
然后其它文件中引用
```go
db,err := DbConn()
db, err := sql.Open("sqlite3", "/var/monitor.db")
checkErr(err)
defer db.Close()
stmt, err := db.Prepare("INSERT INTO monitor(item, value) values(?, ?)")
checkErr(err)
res, err := stmt.Exec(metric.Item,metric.Value)
defer stmt.Close()
checkErr(err)
……
```
运行一段时间就报错:dbcheck:database is locked
是DbConn连接封装的有问题导致 的吗?
这代码略无力吐槽
DbConn里open的sql对象没有close.
你的代码里,db一共open2次,close1次。
另外你这个应该不是真实代码,不然会报错。
#3
更多评论