繁体   English   中英

遇到MySQL主键问题并添加索引(错误#1064)

[英]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
);

SqlFiddle

您还可以将索引定义放在表定义之外, 如下所示

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM