MySQL 修复MySQL ERROR 1075(42000):错误的表定义;只能有一个自动列,必须将其定义为键

MySQL 修复MySQL ERROR 1075(42000):错误的表定义;只能有一个自动列,必须将其定义为键

在MySQL中创建表时,经常会遇到各种错误。其中,ERROR 1075(42000)就是一个比较常见的错误。具体表现为:只能有一个自动列,必须将其定义为键。本文将介绍如何解决这个错误。

阅读更多:MySQL 教程

错误的示例

首先,我们看下面的示例代码。

CREATE TABLE student(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
age INT NOT NULL,
PRIMARY KEY(id),
PRIMARY KEY(name) # 错误语句
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

执行以上代码,会得到以下错误提示:ERROR 1075(42000):错误的表定义;只能有一个自动列,必须将其定义为键

这是因为以上代码中,定义了两个PRIMARY KEY,一个是id,另一个是name。而MySQL规定每个表只能定义一个主键,所以就抛出了这个错误。

解决方法

要解决这个错误,需要做两件事情:

  1. 删除多余的主键
  2. 将自动列定义为主键

具体的代码如下:

CREATE TABLE student(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
age INT NOT NULL,
PRIMARY KEY(id) # 将id定义为主键
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

重新执行以上代码,便不会再出现ERROR 1075错误了。

注意事项

要特别注意的是,对于自增列,必须将它定义为主键。如果不定义为主键,就会报以上错误。

以下是错误示例:

CREATE TABLE student(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
age INT NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

执行以上代码后,会报ERROR 1075错误。因为代码中没有定义主键。

要解决这个错误,只需要将id定义为主键即可:

CREATE TABLE student(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, # 将id定义为主键
name VARCHAR(20) NOT NULL,
age INT NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

结论

如果在MySQL创建表时遇到ERROR 1075(42000):错误的表定义;只能有一个自动列,必须将其定义为键的错误,只需要将自动列定义为主键即可。同时,要注意每个表只能定义一个主键。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程