0

在我的 go 程序中,我这样做是为了初始化我的 sqlite3 模式:

db.MustExec(`ATTACH DATABASE ":memory:" AS "mem"`)
db.MustExec(`CREATE TABLE IF NOT EXISTS "mem.token" (
    "token"  TEXT NOT NULL UNIQUE,
    "expire" INTEGER NOT NULL,
    "login"  TEXT NOT NULL,
    "auth"   INTEGER NOT NULL,
    PRIMARY KEY("token")
) WITHOUT ROWID`)

问题是,这张表是持久化到磁盘上的!退出程序后,我使用 sqlite3 命令行工具打开数据库文件,mem.token表还在,如果我将数据插入其中,即使重新启动 PC,数据也会保留并可用。

如何用瞬态数据制作内存表?

4

2 回答 2

0

尝试这个

db.MustExec(`ATTACH DATABASE "" AS "mem"`)

检查https://www.sqlite.org/inmemorydb.htmlTemporary Databases的部分

于 2021-12-16T06:53:41.313 回答
0

通过引用您创建的数据库:

db.MustExec(`CREATE TABLE IF NOT EXISTS "mem.token" (

您正在指示 SQLite 在当前数据库上创建一个按字面意思命名mem.token的数据库。如果要创建一个token在附加内存数据库上调用的数据库,请不要使用引号:

db.MustExec(`CREATE TABLE IF NOT EXISTS mem.token (
于 2021-12-16T06:54:11.300 回答