gpt4 book ai didi

sqlite - 如何有两个GORM session 到同一个内存数据库?

转载 作者:行者123 更新时间:2023-12-01 22:26:44 31 4
gpt4 key购买 nike

我正在尝试测试GORM代码。代码路径打开一个新的GORM session 。第一个 session 将数据添加到GORM,第二个 session 使用它。在测试时,似乎GORM在使用内存中的参数:memory:时会忘记第一个 session 的数据。我什至尝试了cache=shared选项,但没有成功。

这是一个示例测试:

type testRecord struct{
ID string
Data string
}


func TestOpenGormTwice(t *testing.T){
cxn:=":memory:?cache=shared"
database, err := gorm.Open("sqlite3", cxn)
assert.NoError(t, err)

err=database.CreateTable(&testRecord{}).Error
assert.NoError(t, err)

err=database.Create(testRecord{
ID: "1",
Data: "abc",
}).Error
assert.NoError(t, err)

tr:=testRecord{}
err=database.First(&tr).Error
assert.NoError(t, err)

assert.True(t, database.HasTable(&testRecord{}))

//Open :memory: again, hopefully it won't forget what was saved last time
database2, err := gorm.Open("sqlite3", cxn)
assert.NoError(t, err)
assert.True(t, database2.HasTable(&testRecord{}))
}

测试在最后一个assert.True失败。如何更改此代码以通过上一次测试?

我还尝试了 cxn:="memdb1?mode=memory&cache=shared",它似乎可以工作,但实际上它并没有进入内存模式 as described in the Sqlite docs

最佳答案

这工作:cxn:="file:memdb1?mode=memory&cache=shared"
感谢@karmakaze的评论。

关于sqlite - 如何有两个GORM session 到同一个内存数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59512148/

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