这里的SQL有什么问题?#1089 - 前缀键不正确

san*_*lot 60 mysql sql

CREATE TABLE `table`.`users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `dir` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`(11))
) ENGINE = MyISAM;
Run Code Online (Sandbox Code Playgroud)

我收到#1089 - Incorrect prefix key错误,无法弄清楚我做错了什么.请帮忙!

小智 91

在您使用的PRIMARY KEY定义中(id(11)),它定义了前缀键 - 即前11个字符只应用于创建索引.前缀键仅对,和类型有效CHAR,并且您的字段是,因此错误.VARCHARBINARYVARBINARYidint

使用PRIMARY KEY (id)相反,你应该没事.

MySQL 在这里引用并从第4段中读取.


Ral*_*kay 21

如果您使用的是GUI,但仍然遇到同样的问题.只要将大小值保留为空,主键默认值为11,您应该没问题.使用Bitnami phpmyadmin.


小智 9

这个

主要关键(id(11))

由phpmyadmin自动生成,更改为

主要钥匙(id)

.


Rob*_*Boy 6

有一种简单的方法可以做到。这可能不是专家的答案,它可能不适用于所有人,但对我有用。

取消选中所有主要和唯一复选框,只需创建一个简单的表格。

当 phpmyadmin(或其他)向您显示表结构时,通过给定的按钮将列设为主列。

然后单击更改并编辑该列或其他列的设置,例如“唯一”等。


小智 5

CREATE TABLE `table`.`users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `dir` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`(11))
) ENGINE = MyISAM;
Run Code Online (Sandbox Code Playgroud)

改成

CREATE TABLE `table`.`users` (
        `id` INT(11) NOT NULL AUTO_INCREMENT,
        `username` VARCHAR(50) NOT NULL,
        `password` VARCHAR(50) NOT NULL,
        `dir` VARCHAR(100) NOT NULL,
        PRIMARY KEY (`id`)
    ) ENGINE = MyISAM;
Run Code Online (Sandbox Code Playgroud)


Mal*_*uma 5

这里一步一步的完整解决方案

  • 首先,您必须通过插入所有数据来制作表格。id 应该 AI 打勾。
  • 然后按 go 会弹出 #1089 错误

这是解决方案

  • go 附近有一个按钮,称为预览 SQL
  • 单击该按钮并复制 sql 代码
  • 然后单击窗口顶部的 SQL 选项卡
  • 清除提交的文本并将复制的代码粘贴到那里。
  • 你会(id (11))在代码底部看到这个
  • 替换(id (11))(id)
  • 然后点击去

繁荣现在你会没事的