第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

內(nèi)存中的 sqlite 出現(xiàn)“沒有這樣的表”錯誤

內(nèi)存中的 sqlite 出現(xiàn)“沒有這樣的表”錯誤

Go
慕桂英3389331 2023-04-04 14:35:17
我正在使用內(nèi)存中的 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    })}在我的主要功能中,我創(chuàng)建了表格if global.ConductorConfig.DevMode {    db.CreateTables()}go job.HeartbeatJob()go job.TaskClearJob()app.Action = func(c *cli.Context) error {    ListenAndServe()    return nil}然后我在 http 處理程序函數(shù)中“沒有這樣的表”。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}當(dāng)我啟動程序時,我得到了按服務(wù)器名稱獲取代理時出錯:沒有這樣的表:代理數(shù)據(jù)庫模式(省略屬性)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,);我無法共享所有代碼,這里是重現(xiàn)相同錯誤的最小示例。    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)        }}
查看完整描述

4 回答

?
慕容3067478

TA貢獻1773條經(jīng)驗 獲得超3個贊

:memory:將為每個連接打開一個單獨的數(shù)據(jù)庫。改用file::memory:?cache=shared。

更新:我在使用上面的代碼時也遇到了一些鎖定問題,在我看來,在測試中使用:memory:with是一個更好的解決方案。db.DB().SetMaxOpenConns(1)


查看完整回答
反對 回復(fù) 2023-04-04
?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

也許這會幫助某人

我對“沒有這樣的表”有同樣的問題,并找到了一個確切的解釋:

如果 sql.Rows 在下一個查詢之前沒有關(guān)閉,那么驅(qū)動程序在下一個查詢時不會返回這樣的表。問題僅存在于內(nèi)存存儲中,文件支持的數(shù)據(jù)庫的相同測試運行良好。

在那之后,我找到了我忘記做的代碼部分rows.Close(),修復(fù)了它,現(xiàn)在它可以正常工作了。


查看完整回答
反對 回復(fù) 2023-04-04
?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

如果您使用與在此處發(fā)布的表相同的模式創(chuàng)建表,則永遠不會創(chuàng)建該表,因為該模式有語法錯誤,它應(yīng)該是這樣的


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

);

`

我猜你的代碼與示例代碼相同,所以在 init 函數(shù)中你跳過了錯誤檢查db.Exec(schema)(你永遠不應(yīng)該對 中的任何函數(shù)這樣做Go)。由于未檢查錯誤并且執(zhí)行模式時出錯,因此永遠不會創(chuàng)建表但程序繼續(xù),請更正您的模式并檢查錯誤然后重試。在你的初始化函數(shù)中試試這個:


_, err := db.Exec(schema)


if err != nil {

    log.Fatal(err)


查看完整回答
反對 回復(fù) 2023-04-04
?
www說

TA貢獻1775條經(jīng)驗 獲得超8個贊

當(dāng)我嘗試使用錯誤的事務(wù)時,出現(xiàn)“內(nèi)存中 sqlite 沒有這樣的表”錯誤。例子:


tx, err = DB.Begin()

if err != nil {

    ErrorStatus = true

    goto ErrorLabel

}

tempQuery = "INSERT INTO msg_to_like (msg_id, user_id) " +

    "VALUES ('" + nmbr + "', " + usr + ");"

fmt.Println(tempQuery)

if _, err = DB.Exec(tempQuery); err != nil {

    ErrorStatus = true

    goto ErrorLabel

}

...

但有必要:


if _, err = tx.Exec(tempQuery); err != nil {

出現(xiàn)此錯誤后,使用的表崩潰了。


查看完整回答
反對 回復(fù) 2023-04-04
  • 4 回答
  • 0 關(guān)注
  • 252 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號