table 定义不正确;只能有一个自动列,并且必须将其定义为键,但它是

Incorrect table definition; there can be only one auto column and it must be defined as a key, but it is

当我尝试在 MySQL

中创建 table "subcategorias" 时出现此错误

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

参与的 table 是:

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 列是主键的 PART 部分,但它本身不是主键。你不能使用这种结构。 auto_inc 字段必须是 PK 定义中的唯一字段。