未知的sql(ite)语法错误

时间:2015-12-17 20:41:36

标签: sqlite

为什么以下无效,我在这里不知所措?

'CREATE TABLE IF NOT EXISTS Mons(id int PRIMARY KEY NOT NULL AUTO_INCREMENT, keyword VARCHAR(255) NOT NULL);'

来自node.js的sqlite3,在coffeescript中为:

db.parallelize( () ->
    db.run('CREATE TABLE IF NOT EXISTS Mons(id int PRIMARY KEY NOT NULL AUTO_INCREMENT, keyword VARCHAR(255) NOT NULL);')
    )

确切错误:

Error: SQLITE_ERROR: near "AUTO_INCREMENT": syntax error
  at Error (native)

2 个答案:

答案 0 :(得分:1)

sqlite中自动增量主键的语法是

INTEGER PRIMARY KEY AUTOINCREMENT

而不是

int PRIMARY KEY NOT NULL AUTO_INCREMENT

如果省略AUTOINCREMENT关键字,您的autoincrement behavior会略有不同。

答案 1 :(得分:1)

使用AUTO_INCREMENT不是最佳选择,除非您想要db的生命周期中使用唯一键。如果删除记录,则永远不能再使用该ID。这个约束会降低你的数据库速度并使用更多的内存,所以如果你不需要唯一的密钥,我建议删除它,因为PRIMARY KEY已经有一个约束来抵制任何相同的主键。