使用索引创建 table 时出现 SQLite 错误

SQLite error on table creation with index

我正在尝试使用具有索引的 PHP 创建 SQLite3 数据库。

There is an example on dev.mysql 使索引如下所示。

$db = new SQLite3(':memory:');

$db->exec("CREATE TABLE sales (
    kitchen_name VARCHAR(255) NOT NULL,
    amount_name VARCHAR(255),
    amount NUMERIC(15,2),
    name_key VARCHAR(255) NOT NULL,
    flag_total TINYINT(1),
    INDEX kitchen_value_key (kitchen_name,name_key)
);");

我在 online parser 中有 运行 查询,它返回时有效 MySQL。

但我一直收到错误消息:

SQLite3::exec(): near "INDEX": syntax error

我做错了什么?

这确实是有效的 MySQL 语法,但您没有使用 MySQL,您使用的是 SQLite,它是一个不同的 RDBMS。

SQLite 只是不支持在 table 定义中内联索引定义的语法,因此您必须求助于使用两个单独的语句:

CREATE TABLE sales (
    kitchen_name VARCHAR(255) NOT NULL,
    amount_name VARCHAR(255),
    amount NUMERIC(15,2),
    name_key VARCHAR(255) NOT NULL,
    flag_total TINYINT(1)
);

CREATE INDEX kitchen_value_key ON sales(kitchen_name,name_key);

SQLFiddle

SQLITE 不是 mysql。他们在

点有非常不同的句法规则

我假设您想在 SQLITE table 上创建一个普通索引。 将索引创建放在 table 创建的单独语句中。

您应该按照

上的说明进行操作

https://www.sqlite.org/lang_createindex.html

CREATE INDEX IF NOT EXISTS kitchen_value_key ON sales (kitchen_name, name_key)