我正在尝试用带有索引的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
我做错了什么?
答案 0 :(得分:4)
这确实是有效的MySQL语法,但你没有使用MySQL,你使用的是SQLite,它是一个不同的RDBMS。
SQLite只是不支持在表定义中内联索引定义的语法,因此您不得不求助于使用两个单独的语句:
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 强>
答案 1 :(得分:2)
SQLITE不是mysql。他们在句点上有非常不同的句法规则
我假设您要在SQLITE表上创建普通索引。 将索引创建放在表创建的单独语句中。
您应该按照
上的说明操作https://www.sqlite.org/lang_createindex.html
CREATE INDEX IF NOT EXISTS kitchen_value_key ON sales (kitchen_name, name_key)