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 表定义不正确;只能有一个自动列,并且必须将其定义为键

1075 链表元素分类

phpmyadmin:MySQL 的表行数不正确

无法从代码插入中间表,但是当从 MySQL 中的 phpmyadmin 执行时,它会正确插入

PAT1075-----链表元素分类 (25分)