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;
我收到了#1089 - Incorrect prefix key
错误,无法弄清楚我做错了什么。求救!
答案 0 :(得分:88)
在PRIMARY KEY定义中,您使用了(id(11))
,它定义了前缀键 - 即前11个字符只应用于创建索引。前缀密钥仅对CHAR
,VARCHAR
,BINARY
和VARBINARY
类型有效,而您的id
字段为int
,因此会出错。
请改用PRIMARY KEY (id)
,你应该没问题。
MySQL参考here,并阅读第4段。
答案 1 :(得分:19)
如果您使用的是GUI,但仍然遇到同样的问题。只要将大小值保留为空,主键默认值为11,您应该没问题。与Bitnami phpmyadmin合作。
答案 2 :(得分:9)
这个
PRIMARY KEY(
id
(11))
由phpmyadmin自动生成,更改为
PRIMARY KEY(
id
)
答案 3 :(得分:4)
有一种简单的方法。这可能不是专家的答案,它可能对每个人都不起作用,但它对我有用。
取消选中所有主要和唯一复选框,jut创建一个简单的简单表格。
当phpmyadmin(或其他)向您显示表格结构时,请按给定按钮创建主要列。
然后点击更改,然后修改该字符串或其他列的设置,例如' unique'等。
答案 4 :(得分:4)
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;
更改为
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;
答案 5 :(得分:2)
它对我有用:
CREATE TABLE `users`(
`user_id` INT(10) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE = MyISAM;
答案 6 :(得分:2)
问题在phpMyAdmin中对我来说是一样的。我刚刚创建了一个没有任何const的表。 后来我将ID修改为主键。然后我将ID更改为Auto-inc。 这解决了这个问题。
ALTER TABLE `users` CHANGE `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT;
答案 7 :(得分:2)
当你将id作为主键时,会弹出一个弹出窗口,然后会询问你这个主键的大小。 因此,您只需保留空白,因为默认情况下设置了int值11.单击然后确定弹出的那些没有任何输入数字。 在这种类型的错误中,你将来永远不会面对。 谢谢
答案 8 :(得分:1)
就我而言,从phpmyadmin创建表时遇到了问题。对于id列,我从索引下拉列表中选择主要选项,并填充了大小10。
如果您使用的是phpmyadmin,要解决此问题,请再次更改index下拉选项,然后再次重新选择主选项,它将询问您大小,将其留空即可。
答案 9 :(得分:1)
此处是逐步的完整解决方案
这是解决方案
(id (11))
(id (11))
替换为(id)
现在繁荣起来,一切都会好起来
答案 10 :(得分:0)
根据最新版本的MySQL(phpMyAdmin),在选择主键时添加正确的INDEX。例如:id [int] INDEX 0,如果id是您的主键并且在第一个索引处。 或强>
对于你的问题,试试这个
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;
答案 11 :(得分:0)
我也有同样的问题。
解决方案适用于我:
CREATE TABLE IF NOT EXISTS `users` ( `sr_no` int(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL, `password` VARCHAR(50) NOT NULL, `dir` VARCHAR(100) NOT NULL, PRIMARY KEY (`sr_no`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
我在SQL中粘贴此代码并运行,它运行正常。
答案 12 :(得分:0)
在PHPMyAdmin中,在弹出窗口中忽略大小值/将其保留为空。
答案 13 :(得分:0)
这对我有用:
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`(id))
) ENGINE = MyISAM;
不需要放 id(11)
因为默认情况下它等于 11 所以你离开
将其设为 id
,在 phpmyadmin
中将其留空。