Php SQLite语法与MySQL不兼容?
我正在使用PDO,并试图使我的应用程序同时支持MySQL和SQLite,但在SQLite中,我在尝试导入数据库架构时遇到以下错误:Php SQLite语法与MySQL不兼容?,php,mysql,sql,sqlite,pdo,Php,Mysql,Sql,Sqlite,Pdo,我正在使用PDO,并试图使我的应用程序同时支持MySQL和SQLite,但在SQLite中,我在尝试导入数据库架构时遇到以下错误: SQLSTATE[HY000]:一般错误:1靠近“自动增量”:语法错误 查询如下所示: CREATE TABLE events ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL, title VARCHAR(64) NOT NULL, description L
SQLSTATE[HY000]:一般错误:1靠近“自动增量”:语法错误
查询如下所示:
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数据库中工作。)
我不明白这里有什么问题?这两个数据库系统不应该兼容吗?不,它们支持完全不同的一组功能。最显著的区别是SQLite使用,而MySQL使用,但是还有许多其他的区别
但是,它们都支持SQL的一个公共子集,因此可以编写一些简单的SQL语句,在这两个系统中都可以使用。
AUTO\u INCREMENT
是特定于MySQL的。SQLite显然有一个类似的东西,AUTOINCREMENT
它们应该兼容ANSI SQL标准,所有SQL数据库都应该遵守这一点。但是,AutoIncrement不是该标准的一部分,而是一些数据库(包括MySQL)实现的额外功能。并非所有数据库都提供该功能,或者可能以不同的方式或不同的语法提供该功能。不幸的是,虽然SQL应该是一种标准,但每个数据库实现都是不同的,都有自己的特点,因此您必须安排查询,使其在SQLite上工作。
在SQLite中,它被称为AUTOINCREMENT,而不是AUTO_INCREMENT-AUTOINCREMENT不是ANSI,序列最近才被制成ANSI,用于处理顺序值生成。是什么让你认为它们是一样的?每个RDBMS似乎都有自己的小问题,因此您将遇到此类问题。下面是关于自动增量的sqlite文档:好的,我更改了,但是现在我得到了相同的错误…
靠近“自动增量”:
您可能必须说likeid INT NOT NULL主键自动增量
。我从来没有为SQLite烦恼过;我只知道如何用谷歌搜索。:)