当我尝试在 MySQL 中创建“子类别”表时遇到此错误
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
涉及的表是:
CREATE TABLE categorias (
idcategoria INTEGER(3) NOT NULL AUTO_INCREMENT,
nombre VARCHAR(32) NOT NULL,
descripcion VARCHAR(256) NOT NULL,
logo VARCHAR(128) NOT NULL COMMENT 'url',
imagen VARCHAR(128) NOT NULL COMMENT 'url',
recomendado ENUM('0', '1', '2', '3', '4', '5') NOT NULL DEFAULT '0',
estado ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (idcategoria)
) ENGINE=InnoDB;
CREATE TABLE subcategorias (
idcategoria INTEGER(3) NOT NULL,
idsubcategoria INTEGER(3) NOT NULL AUTO_INCREMENT,
nombre VARCHAR(32) NOT NULL,
descripcion VARCHAR(256) NOT NULL,
logo VARCHAR(128) NOT NULL COMMENT 'url',
imagen VARCHAR(128) NOT NULL COMMENT 'url',
recomendado ENUM('0', '1', '2', '3', '4', '5') NOT NULL DEFAULT '0',
estado ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (idcategoria, idsubcategoria),
FOREIGN KEY (idcategoria) REFERENCES categorias(idcategoria)
) ENGINE=InnoDB;
问题是什么?
最佳答案
这里:
CREATE TABLE subcategorias (
idcategoria INTEGER(3) NOT NULL,
idsubcategoria INTEGER(3) NOT NULL AUTO_INCREMENT, <---your auto_inc column
PRIMARY KEY (idcategoria, idsubcategoria), <--- the PK definition
您的 auto_inc 列是主键的部分,但它本身并不是主键。您不能使用这种构造。 auto_inc 字段必须是 PK 定义中的唯一字段。
关于mysql - 表定义不正确;只能有一个自动列,并且必须将其定义为键,但它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27748045/