SQLite table 只能容纳 1 行?
SQLite table is only able to hold 1 row?
所以,我有 2 个 table,我已经根据文档添加了它们,但是每当我尝试向它们添加一行时,都会发生一些奇怪的事情。数据被写入 .db
文件,但每当我查询它时,它只 returns 第一行。我仍然可以正常更新和读取这些行,但是我写入它们的任何数据都不会更新 table。只写了第一行。
我查看了所有陈述,我知道它们是正确的,因为第一个陈述将它添加到 table,但第二个陈述没有。根据文档,我正在使用 npm
中 sqlite3
的基本配置,所以我不知道我做错了什么。
我没有任何错误,预期的结果是我能够添加尽可能多的行
db.serialize(function() {
db.run("CREATE TABLE users (userId int, user varchar(255))");
db.run("CREATE TABLE notes (userId int, uuid varchar(50), name varchar(255), noteData varchar(1024), file BLOB(21845))")
});
db.run("INSERT INTO users (userId, user) VALUES (0, 'User')")
db.run(`INSERT INTO notes (userId, uuid, name, noteData) VALUES (0, 'uuid', 'First Note','This will be readable.')`)
//This statement will add the data to the file, but the query won't read it.
db.run(`INSERT INTO notes (userId, uuid, name, noteData) VALUES (1, 'uuid2', 'First Note','This will not show.')`)
db.get("SELECT * FROM notes",[],(err,row)=>{console.log(row)})
此外,这不是异步问题。在示例中,我添加了最后一行,但它实际上并不在我的代码中。几分钟后我请求它,我可以确认文本在数据库中,它只是决定不读它。
您在 notes
table 中的第二次插入看起来有语法错误,因为使用了额外的单引号。
我已经通过在 db-fiddle.com 处使用两个单引号进行了更改并且它正在工作,但我不确定为什么你没有得到异常。
INSERT INTO users (userId, user) VALUES (0, 'User');
INSERT INTO notes (userId, uuid, name, noteData) VALUES (0, 'uuid', 'First Note','This will be readable.');
INSERT INTO notes (userId, uuid, name, noteData) VALUES (1, 'uuid2', 'First Note','This won''t.');
SELECT * FROM notes;
参考使用两个单引号; https://www.sqlite.org/faq.html#q14
结果我需要使用 db.all
。 db.get
returns 只有第一行。
所以,我有 2 个 table,我已经根据文档添加了它们,但是每当我尝试向它们添加一行时,都会发生一些奇怪的事情。数据被写入 .db
文件,但每当我查询它时,它只 returns 第一行。我仍然可以正常更新和读取这些行,但是我写入它们的任何数据都不会更新 table。只写了第一行。
我查看了所有陈述,我知道它们是正确的,因为第一个陈述将它添加到 table,但第二个陈述没有。根据文档,我正在使用 npm
中 sqlite3
的基本配置,所以我不知道我做错了什么。
我没有任何错误,预期的结果是我能够添加尽可能多的行
db.serialize(function() {
db.run("CREATE TABLE users (userId int, user varchar(255))");
db.run("CREATE TABLE notes (userId int, uuid varchar(50), name varchar(255), noteData varchar(1024), file BLOB(21845))")
});
db.run("INSERT INTO users (userId, user) VALUES (0, 'User')")
db.run(`INSERT INTO notes (userId, uuid, name, noteData) VALUES (0, 'uuid', 'First Note','This will be readable.')`)
//This statement will add the data to the file, but the query won't read it.
db.run(`INSERT INTO notes (userId, uuid, name, noteData) VALUES (1, 'uuid2', 'First Note','This will not show.')`)
db.get("SELECT * FROM notes",[],(err,row)=>{console.log(row)})
此外,这不是异步问题。在示例中,我添加了最后一行,但它实际上并不在我的代码中。几分钟后我请求它,我可以确认文本在数据库中,它只是决定不读它。
您在 notes
table 中的第二次插入看起来有语法错误,因为使用了额外的单引号。
我已经通过在 db-fiddle.com 处使用两个单引号进行了更改并且它正在工作,但我不确定为什么你没有得到异常。
INSERT INTO users (userId, user) VALUES (0, 'User');
INSERT INTO notes (userId, uuid, name, noteData) VALUES (0, 'uuid', 'First Note','This will be readable.');
INSERT INTO notes (userId, uuid, name, noteData) VALUES (1, 'uuid2', 'First Note','This won''t.');
SELECT * FROM notes;
参考使用两个单引号; https://www.sqlite.org/faq.html#q14
结果我需要使用 db.all
。 db.get
returns 只有第一行。