Phpmyadmin #1075 - 表定义不正确;只能有一个自动列,并且必须将其定义为键
Posted
技术标签:
【中文标题】Phpmyadmin #1075 - 表定义不正确;只能有一个自动列,并且必须将其定义为键【英文标题】:Phpmyadmin #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key 【发布时间】:2013-12-17 02:50:00 【问题描述】:嗨, 我正在将 mySql 数据库(最初是一个访问数据库)导入 phpmyadmin,它给了我这个错误:
SQL 查询:
CREATE TABLE `Acc_inst` (
`inst_ID` INTEGER NOT NULL AUTO_INCREMENT ,
`inst_Name` VARCHAR( 255 ) ,
`Inst_Ws` VARCHAR( 255 ) ,
`inst_ph` VARCHAR( 255 ) ,
`inst_Fx` VARCHAR( 255 ) ,
`Inst_E` VARCHAR( 255 )
) ENGINE = INNODB DEFAULT CHARSET = utf8;
mysql 说:文档
1075 - 表定义不正确;只能有一个自动列,并且必须定义为一个键
-- 实际上只有自动增量列,它被定义为主键,所以我不明白为什么它给我这个错误
【问题讨论】:
【参考方案1】:CREATE TABLE `Acc_inst`
(
`inst_ID` INTEGER NOT NULL primary key AUTO_INCREMENT ,
`inst_Name` VARCHAR( 255 ) ,
`Inst_Ws` VARCHAR( 255 ) ,
`inst_ph` VARCHAR( 255 ) ,
`inst_Fx` VARCHAR( 255 ) ,
`Inst_E` VARCHAR( 255 )
) ENGINE = INNODB DEFAULT CHARSET = utf8;
错误提示您必须将自动增量列定义为键:将 primary key
添加到此列定义中。
【讨论】:
【参考方案2】:将您的自增列定义为主键。
CREATE TABLE `Acc_inst`
(
`inst_ID` INTEGER NOT NULL AUTO_INCREMENT ,
`inst_Name` VARCHAR( 255 ) ,
`Inst_Ws` VARCHAR( 255 ) ,
`inst_ph` VARCHAR( 255 ) ,
`inst_Fx` VARCHAR( 255 ) ,
`Inst_E` VARCHAR( 255 ) ,
PRIMARY KEY `inst_ID`(`inst_ID`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
【讨论】:
【参考方案3】:有点晚了,但我在最新版本的 phpMyAdmin (4.4.2) 中遇到了同样的错误。 Nimara 使用手动 SQL 查询,我使用特殊的“添加新表”表单仍然出现此错误。
所以,对于那些像我一样来到这里的人,搜索 #1075 错误,你应该知道如果你首先在表单中设置索引/主/自动增量列,然后添加一些新列和然后想提交表格。似乎当您添加更多列时,phpMyAdmin 会进行某种后台刷新并丢失“主要”信息。您仍然可以在表单中看到它,但在后台它发送的 SQL 查询不再包含此信息。
因此,解决方案是取消选择您的主列并重新设置它。 我很确定这是一个错误,但它可以通过这种方式简单快速地解决。
【讨论】:
以上是关于Phpmyadmin #1075 - 表定义不正确;只能有一个自动列,并且必须将其定义为键的主要内容,如果未能解决你的问题,请参考以下文章
ERROR 1075:表定义不正确;只能有一个自动列,并且必须将其定义为键
SQLSTATE[42000]:语法错误或访问冲突:1075 表定义不正确;只能有一个自动列,并且必须将其定义为键