SQLite语法与MySQL不兼容?

Ale*_*lex 6 php mysql sql sqlite pdo

我正在使用PDO并尝试使我的应用程序支持MySQL和SQLite,但在sqlite中,当我尝试导入我的数据库模式时出现此错误:

SQLSTATE[HY000]: General error: 1 near "AUTO_INCREMENT": syntax error

查询如下所示:

CREATE TABLE events (

  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(32) NOT NULL,
  title VARCHAR(64) NOT NULL,
  description LONGTEXT,
  starttime DATETIME DEFAULT '0000-00-00 00:00:00',

  PRIMARY KEY(id),
  KEY name(name)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

(它可以在MySQL数据库中运行.)

我不明白这里的问题是什么?两个数据库系统不应兼容吗?

Vil*_*989 8

http://www.sqlite.org/autoinc.html

在SQLite中,它被称为AUTOINCREMENT,而不是AUTO_INCREMENT


cHa*_*Hao 5

AUTO_INCREMENT是特定于MySQL的.SQLite显然有类似的东西,AUTOINCREMENT.

  • 你可能不得不说`id INT NOT NULL PRIMARY KEY AUTOINCREMENT`.我从来没有厌烦过SQLite; 我只知道如何谷歌.:) (2认同)

Mar*_*ker 5

它们与ANSI SQL标准兼容,并且所有SQL数据库都应遵守该标准。但是,AutoIncrement不是该标准的一部分,而是某些数据库(包括MySQL)实现的一项附加功能。并非所有的数据库都提供该功能,或者可能以不同的方式或不同的语法提供该功能。