mysql - MySQL 主键和添加索引时遇到问题(错误#1064)

标签 mysql indexing key

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 服务器版本相对应的手册,了解在 'INDEX, 附近使用的正确语法 成功 TINYINT UNSIGNED NOT NULL, Time_Created DATETIME NOT NULL)' 在第 3 行

最佳答案

要在 CREATE TABLE 语句中定义内联索引,您需要将其放在单独的 'create definition' 上。行:

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

您还可以将索引定义放在表定义之外,like so :

CREATE INDEX IX_registers_ip ON registers(IP);

给索引命名是一种很好的做法,这样可以准确地引用它。

关于mysql - MySQL 主键和添加索引时遇到问题(错误#1064),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29642089/

相关文章:

php - 使用复选框 ajax 更改查询

php - 对表中的数字求和并保存在变量中

php - 基于动态数量的条件查询数据库

R:根据索引列表粘贴一些字符串向量元素

python - numpy:如何加入数组? (获得几个范围的联合)

Hibernate/JPA - 可以同时使用@Id 和@EmbededId 吗?

mysql - 如何在django中删除具有重复列的行

c++ - 为什么 Eclipse 的索引器可以识别某些类,而不能识别其他类?

javascript - 检查 JavaScript 数组

Python:循环一个字典并在满足条件的情况下在新字典中创建键/值对