📌  相关文章
📜  语法错误或访问冲突:1075 Incorrect table def inition;只能有一个自动列,并且必须将其定义为键 (1)

📅  最后修改于: 2023-12-03 15:41:46.957000             🧑  作者: Mango

SQL错误:1075 - Incorrect table definition

该错误通常是由于在定义表时出现语法错误或访问冲突导致的。具体地说,该错误消息指出表的定义中仅允许有一个自动列,并且必须将其定义为键。

错误信息分析

该错误信息表明,您在创建表时定义了多个自动列或没有将自动列定义为键。自动列是在表中自动增加的列,它们在插入新值时自动递增。例如,可以使用自动列来为每个新的插入值分配唯一的ID号。只有一个自动列可以定义为自动递增键代表整个表的唯一标识。

如何解决错误

为了解决此问题,您应该考虑以下建议:

  1. 仅允许一个自动列:如果您的表中确实需要自动列,请确保该列唯一,并将其定义为主键。
  2. 使自动列为主键:将自动列(ID列)作为表的主键并确保没有其他重复值。

下面是一些示例代码,希望能帮助您解决错误。

-- 错误示例
CREATE TABLE my_table (
    id1 INT AUTO_INCREMENT PRIMARY KEY,
    id2 INT AUTO_INCREMENT
);

-- 正确示例
CREATE TABLE my_table (
    id1 INT AUTO_INCREMENT PRIMARY KEY,
    other_col VARCHAR(255)
);

-- 正确示例
CREATE TABLE my_table (
    id1 INT AUTO_INCREMENT PRIMARY KEY,
    other_col VARCHAR(255),
    UNIQUE KEY id1_unique(id1)
);

在示例中,第一个代码片段中所示的表定义是错误的,因为它定义了两个自动列。第二个代码片段中所示的表定义是正确的,因为它只有一个自动列,而其他的列设置为非自动列。第三个代码片段中所示的表定义是没有错误的,因为它定义了一个自动列和一个非自动列,并将自动列定义为唯一键。