我正在做一个实现sqlite的web应用程序项目。我遇到了一个问题,我想从数据库中请求信息,但只能从具有特定索引的行中请求。问题是表中的rowid
不是1,2,3,....
下面我已经发布:
1.负责创建/填充表的代码
1.代码console.log
正在执行rowid
1.来自(2)的输出
我是不是在创建表时做错了什么,导致了这个问题?如果不是,有没有办法重置表的rowid
,使它们是1,2,3,...?
// node.js file filling the database
...
db.serialize(function () {
db.run(
"CREATE TABLE IF NOT EXISTS Movies(title TEXT UNIQUE, image TEXT, description TEXT, duration TEXT, release TEXT, age TEXT, schedule TEXT)"
);
var stmt = db.prepare(
"INSERT OR REPLACE INTO Movies(title, image, description, duration, release, age, schedule) VALUES (?, ?, ?, ?, ?, ?, ?)"
);
const jsondata = JSON.stringify(m.schedule);
stmt.run(
m.title,
m.image,
m.description,
m.duration,
m.release,
m.age,
jsondata
);
stmt.finalize();
});
...
// node.js file handling requests
...
app.get('/moviesJson', (req,res) => {
const sql = 'SELECT rowid FROM Movies;
db.all(sql, (err, rows) => {
if(err) throw err;
console.log(rows);
res.json(rows);
});
});
...
// output
[
{ rowid: 568 }, { rowid: 576 },
{ rowid: 567 }, { rowid: 562 },
{ rowid: 571 }, { rowid: 472 },
{ rowid: 575 }, { rowid: 570 },
{ rowid: 561 }, { rowid: 279 },
{ rowid: 569 }, { rowid: 574 },
{ rowid: 284 }, { rowid: 565 },
{ rowid: 451 }, { rowid: 573 },
{ rowid: 564 }, { rowid: 572 },
{ rowid: 563 }, { rowid: 566 }
]
1条答案
按热度按时间ht4b089n1#
SqLite文档说:
如果只插入行而不删除行,我建议创建空表将其重置为1;否则,您不能依赖ROWID始终是顺序的。