2015-12-17 3 views
1

Почему следующее недопустимое, я здесь не в порядке?Ошибка синтаксиса sql (ite) неизвестна

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

С sqlite3 Node.js-х годов, в 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) 
+0

sqlite или mysql? – scaisEdge

+0

sqlite (отложить этот комментарий сейчас) –

ответ

1

Синтаксис для автоинкремент первичного ключа в SQLite является

INTEGER PRIMARY KEY AUTOINCREMENT 

, а не

int PRIMARY KEY NOT NULL AUTO_INCREMENT 

Если опустить AUTOINCREMENT ключевое слово, вы получите немного разные autoincrement behavior.

1

Использование AUTO_INCREMENT - не самая лучшая идея, если вы не хотите использовать уникальные ключи для жизни вашего db. Если вы удалите запись, этот идентификатор никогда не будет использоваться снова. Это ограничение замедлит вашу базу данных и будет использовать больше памяти, поэтому, если вам не нужны уникальные ключи, я бы предложил отказаться от нее, поскольку PRIMARY KEY уже имеет ограничение, чтобы противостоять любым идентичным первичным ключам.

Смежные вопросы