我正在运行一个 sql 文件列表。文件列表来自同一个 sqlite3 数据库,我将对其执行 sql,因此只有一个数据库连接。如果我不终止 sql 文件的循环,它将为从第一个文件开始的每个文件返回“数据库已锁定”错误。不起作用的事情:
删除 sqlx 并使用 database/sql 没有任何改变。
无效:打开或关闭 Navicat。
重新启动我的笔记本电脑,没有效果。
无效:将数据库转储到新文件,然后针对新文件运行进程。
package main
import (
"database/sql"
"fmt"
"io/ioutil"
"os"
_ "github.com/mattn/go-sqlite3"
)
func main() {
dbPath := "/Users/darianhickman/Documents/wc_study/history.db"
db, err := sql.Open("sqlite3", dbPath)
if err != nil {
println("db open failed.", err)
os.Exit(-1)
}
defer db.Close()
// qry := `select list_folder||'/'|| sql_file as script from run_list where 'order' > 0 ORDER BY 'order'; `
qry := `select list_folder||'/'|| sql_file as script from run_list
where run_order > 0
ORDER BY run_order;`
scripts, err := db.Query(qry)
if err != nil {
println("query failed ", qry)
os.Exit(-1)
}
defer scripts.Close()
var file string
for scripts.Next() {
err = scripts.Scan(&file)
if err != nil {
println(err)
}
println(file[len(file)-80:])
sqlScript, err := ioutil.ReadFile(file)
if err != nil {
println("reading script file failed\n", file)
}
if _, err := db.Exec(string(sqlScript)); err != nil {
fmt.Println(string(sqlScript[:80]))
fmt.Println(err)
} else {
fmt.Println("Success ", string(sqlScript[:80]))
}
}
}
翻过高山走不出你
红颜莎娜
相关分类