ERROR 1075:表定义不正确;只能有一个自动列,并且必须将其定义为键

Posted

技术标签:

【中文标题】ERROR 1075:表定义不正确;只能有一个自动列,并且必须将其定义为键【英文标题】:ERROR 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key 【发布时间】:2014-03-12 21:32:42 【问题描述】:

我尝试“更改表格” 我需要一个人工智能领域,而不是关键...... “列表”

ID INT(11):PK Not Null AutoIn..
Name VARCHAR
UserID INT(11):FK Not Null
edit BOOL

现在我需要一个字段“sortpos”作为 AI。 我用 mysql Workbench 试试

ALTER TABLE `**mydb**`.`List` 
ADD COLUMN `sortpos` INT(11) NOT NULL AUTO_INCREMENT AFTER `edit`;

你能帮帮我吗?

谢谢

【问题讨论】:

正如错误所说,它必须是 pkey 的一部分。另见***.com/questions/5416548/… 但我需要单独的 sortpos,比如 id,所以自动递增。是否有可能在 sortpos 中克隆 id,默认为示例? 缺少一些解释,为什么需要两个值完全相同的字段? 我还需要一个字段来对输出进行排序,我需要一个唯一的键来切换 我不关注,你已经有一个唯一的密钥,ID。你是什​​么意思“切换”?切换什么?你能发布查询吗? 【参考方案1】:

没有比这更好的错误信息了。您的表中已将 ID 定义为 Auto Increment。现在您正在尝试添加另一个字段 sortpos 作为不允许的自动增量。 一张表只能有一个自增,必须定义为主键。

从 alter 语句中删除 AUTO_INCREMENT 并创建一个触发器来增加新列。

【讨论】:

你能帮我创建一些触发器吗:通过将副本 ID 插入到 sortpos【参考方案2】:

根据您的 cmets,您将用户界面与表数据混淆了。该表只需要一个 ID,如果您愿意,可以创建如下查询:

SELECT ID, ID AS SORTPOS, NAME FROM List

但您甚至不需要查询,您应该只在用户界面级别进行。

另外,您在评论中显示的只是列表的标题,而不是列表本身。

【讨论】:

以上是关于ERROR 1075:表定义不正确;只能有一个自动列,并且必须将其定义为键的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[42000]:语法错误或访问冲突:1075 表定义不正确;只能有一个自动列,并且必须将其定义为键

导入WordPress数据库 - #1075 - 表定义不正确;只能有一个自动列,必须将其定义为键

Mysql2::Error:只能有一个自动列,并且必须将其定义为键

#1293 - 表定义不正确;在 DEFAULT 或 ON UPDATE 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列

Pig ERROR 1075:从 UDF 接收到一个字节数组。无法确定如何将字节数组转换为字符串

1075 链表元素分类