使用索引创建 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);
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)
我正在尝试使用具有索引的 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);
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)