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 列