只能有一个自动列

时间:2011-12-27 14:46:39

标签: mysql ddl

如何更正MySQL的错误'你只能有一个自动增量列'。

CREATE TABLE book (
   id INT AUTO_INCREMENT NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

4 个答案:

答案 0 :(得分:98)

我的MySQL说“表定义不正确;只有一个自动列,必须将其定义为键”所以当我添加主键时,它开始工作:

CREATE TABLE book (
   id INT AUTO_INCREMENT NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL,
   primary key (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

答案 1 :(得分:30)

发出完整的错误消息:

  

错误1075(42000):表定义不正确;只能有一个自动列,必须将其定义为键

然后将primary key添加到auto_increment字段:

CREATE TABLE book (
   id INT AUTO_INCREMENT primary key NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

答案 2 :(得分:6)

CREATE TABLE book (
   id INT AUTO_INCREMENT primary key NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

答案 3 :(得分:6)

另请注意,“key”并不一定意味着 primary 键。这样的事情会起作用:

CREATE TABLE book (
    isbn             BIGINT NOT NULL PRIMARY KEY,
    id               INT    NOT NULL AUTO_INCREMENT,
    accepted_terms   BIT(1) NOT NULL,
    accepted_privacy BIT(1) NOT NULL,
    INDEX(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这是一个人为的例子,可能不是最好的主意,但在某些情况下它可能非常有用。