创建主键时报错:ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it mus

今天在创建有联合主建的表时,出现下面的错误:

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

 

mysql> CREATE TABLE animals1 (

    ->     grp ENUM('fish','mammal','bird') NOT NULL,

    ->     id MEDIUMINT NOT NULL AUTO_INCREMENT,

    ->     name CHAR(30) NOT NULL,

    ->     PRIMARY KEY (grp,id)

    -> ) ENGINE=innodb;

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

 

--使用MyISAM存储引擎时不会出现问题

mysql> CREATE TABLE animals1 (

    ->     grp ENUM('fish','mammal','bird') NOT NULL,

    ->     id MEDIUMINT NOT NULL AUTO_INCREMENT,

    ->     name CHAR(30) NOT NULL,

    ->     PRIMARY KEY (grp,id)

    -> ) ENGINE=MyISAM;

Query OK, 0 rows affected (0.00 sec)

 

--创建单字段主键时不会出现问题

mysql> CREATE TABLE animals (

    ->      id MEDIUMINT NOT NULL AUTO_INCREMENT,

    ->      name CHAR(30) NOT NULL,

    ->      PRIMARY KEY (id)

    ->  );

Query OK, 0 rows affected (0.00 sec)

 

--查看创建语句

mysql> show create table animals\G;

*************************** 1. row ***************************

       Table: animals

Create Table: CREATE TABLE `animals` (

  `id` mediumint(9) NOT NULL AUTO_INCREMENT,

  `name` char(30) NOT NULL,

  PRIMARY KEY (`id`)

)ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

 

ERROR:

No query specified

 

解决办法:

把联合主键中的自增列放在联合主建的最左端,创建成功

mysql> drop table animals1;

mysql> CREATE TABLE animals1 (

    ->     grp ENUM('fish','mammal','bird') NOT NULL,

    ->     id MEDIUMINT NOT NULL AUTO_INCREMENT,

    ->     name CHAR(30) NOT NULL,

    ->     PRIMARY KEY (id,grp)

    -> );

Query OK, 0 rows affected (0.00 sec)

 

mysql> show create table animals1\G;

*************************** 1. row ***************************

       Table: animals1

Create Table: CREATE TABLE `animals1` (

  `grp` enum('fish','mammal','bird') NOT NULL,

  `id` mediumint(9) NOT NULL AUTO_INCREMENT,

  `name` char(30) NOT NULL,

  PRIMARY KEY(`id`,`grp`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

 

ERROR:

No query specified

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值