gpt4 book ai didi

database - "no such table"内存中 sqlite 错误

转载 作者:IT王子 更新时间:2023-10-29 02:09:09 25 4
gpt4 key购买 nike

我正在使用内存中的 sqlite,如下所示。

func init() {
global.ConductorConfig = readConfig()
log.Println(utils.GetCurrentDir() + global.ConductorConfig.DbFile)
//db = sqlx.MustConnect("sqlite3", utils.GetCurrentDir()+global.ConductorConfig.DbFile)
db = sqlx.MustConnect("sqlite3", ":memory:")
db.Exec(schema)
task:=model.Task{}
SaveTask(&task)
db.MapperFunc(func(s string) string {
return s
})
}

在我的主要功能中,我创建了表格

if global.ConductorConfig.DevMode {
db.CreateTables()
}
go job.HeartbeatJob()
go job.TaskClearJob()
app.Action = func(c *cli.Context) error {
ListenAndServe()
return nil
}

然后我在 http 处理程序函数中“没有这样的表”。

existed, err := db.GetAgentByServerName(agent.ServerName)
if err != nil {
c.JSON(http.StatusBadRequest, err)
log.Println("[conductor] error occurred when get agent by server name: " + err.Error())
return err
}


func GetAgentByServerName(name string) (*model.Agent, error) {
agent := &model.Agent{}
err := db.Get(agent, "select * from agent where ServerName=$1", name)

if err == sql.ErrNoRows {
err = nil
agent = nil
}

return agent, err
}

当我启动程序时,我得到了

error occurred when get agent by server name: no such table: agent

数据库模式(省略属性)

var schema = `
DROP TABLE IF EXISTS agent;
CREATE TABLE agent (
Id INTEGER PRIMARY KEY,
);

DROP TABLE IF EXISTS task;
CREATE TABLE task (
Id INTEGER PRIMARY KEY,
);

我无法分享所有代码,这里是重现相同错误的最小示例。

    package main

import (
"github.com/jmoiron/sqlx"
_ "github.com/mattn/go-sqlite3"
"log"
)

var db *sqlx.DB

func init() {
db = sqlx.MustConnect("sqlite3", ":memory:")
db.Exec("CREATE TABLE agent (Id INTEGER PRIMARY KEY,);")
}

func main() {
_, err:=db.Exec("insert into agent values (1)")
if err!=nil{
log.Println(err)
}

}

最佳答案

:memory:为每个连接打开一个单独的数据库。使用 file::memory:?cache=shared 代替。

更新:我在使用上面的代码时也遇到了一些锁定问题,在我看来使用 :memory:db.DB().SetMaxOpenConns(1) 在测试中是更好的解决方案。

关于database - "no such table"内存中 sqlite 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52307441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com