[英]Having Trouble with MySQL Primary Key and adding Index (Error #1064)
CREATE TABLE registers(
User_ID INT UNSIGNED NOT NULL PRIMARY KEY,
IP INT UNSIGNED NOT NULL INDEX,
Success TINYINT UNSIGNED NOT NULL,
Time_Created DATETIME NOT NULL)
我收到此错误:
#1064-您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册,以在第3行的'INDEX,Success TINYINT UNSIGNED NOT NULL,Time_Created DATETIME NOT NULL)附近使用正确的语法
要在CREATE TABLE语句中定义内联索引,您需要将其放在单独的“创建定义”行上:
CREATE TABLE registers(
User_ID INT UNSIGNED NOT NULL PRIMARY KEY,
IP INT UNSIGNED NOT NULL,
INDEX(IP),
Success TINYINT UNSIGNED NOT NULL,
Time_Created DATETIME NOT NULL
);
您还可以将索引定义放在表定义之外, 如下所示 :
CREATE INDEX IX_registers_ip ON registers(IP);
命名索引被认为是一种很好的做法,以便可以对其进行准确引用。
请尝试以下操作-在MySQL语法中,INDEX定义不能包含在字段定义中:
CREATE TABLE registers(
User_ID INT UNSIGNED NOT NULL PRIMARY KEY,
IP INT UNSIGNED NOT NULL,
Success TINYINT UNSIGNED NOT NULL,
Time_Created DATETIME NOT NULL,
INDEX `ip_1` (`ip`)
)
或者-有时出于可读性的考虑,可以在创建表后在单独的语句中创建索引:
CREATE TABLE registers(
User_ID INT UNSIGNED NOT NULL PRIMARY KEY,
IP INT UNSIGNED NOT NULL,
Success TINYINT UNSIGNED NOT NULL,
Time_Created DATETIME NOT NULL
);
CREATE INDEX ip_1 ON registers (ip);
您的synatx必须是:
CREATE TABLE registers(
User_ID INT UNSIGNED NOT NULL PRIMARY KEY,
IP INT UNSIGNED NOT NULL ,
Success TINYINT UNSIGNED NOT NULL,
Time_Created DATETIME NOT NULL,
INDEX (IP )
)
有关create table语句的更多信息,请参见官方mysql文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.