我正在使用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;
(它可以在MySQL数据库中运行。)
我不明白这里的问题是什么?这两个数据库系统不应兼容吗?
答案 0 :(得分:8)
http://www.sqlite.org/autoinc.html
在SQLite中,它被称为AUTOINCREMENT,而不是AUTO_INCREMENT
答案 1 :(得分:5)
AUTO_INCREMENT
是特定于MySQL的。 SQLite显然有类似的东西,AUTOINCREMENT
。
答案 2 :(得分:4)
应该兼容ANSI SQL标准,并且所有SQL数据库应该遵守该标准。但是,AutoIncrement不是该标准的一部分,而是由某些数据库(包括MySQL)实现的额外功能。并非所有数据库都提供该功能,或者可能以不同的方式或以不同的语法提供该功能。
答案 3 :(得分:3)
不幸的是,虽然SQL应该是一个标准,但每个数据库实现都是不同的,并且有自己的特点,所以你必须安排你的Query以使它在SQLite上运行。
答案 4 :(得分:2)
不,它们支持完全不同的功能集。最重要的区别是SQLite使用dynamic data types而MySQL使用static data types,但也有许多其他差异。
但是,它们都支持SQL的公共子集,因此可以编写一些可在两个系统中都有效的简单SQL语句。