MyISAM转换InnoDB引擎限制
本文为您介绍 MyISAM 引擎自动转换为 InnoDB 引擎后,创建表时报错的解决方案。
# 背景
首云云数据库 MySQL 默认支持 MyISAM 存储引擎,并在 MySQL 8.0 版本中,不再支持 MyISAM 引擎。
当数据库迁移到云数据库 MySQL 8.0 版本时,需要把 MyISAM 引擎转换为 InnoDB 引擎。
相对于 MyISAM 引擎,InnoDB 引擎不支持复合主键包含自增列,当 MyISAM 引擎转换为 InnoDB 引擎后,创建表时会报错,报错信息如下:
ERROR 1075 (42000):Incorrect table definition;there can be only one auto column and it must be defined as a key
1
建议您通过为自增列创建索引的方式,实现 InnoDB 引擎的复合主键包含自增列语法。
# InnoDB 引擎复合主键包含自增列的修改方案
# 原创建表报错的 SQL 语句:
create table table_name ( id int(8) AUTO_INCREMENT, name varchar(19), value varchar(10), primary key (name,id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;1
2
3
4
5
6
7报错如下:
ERROR 1075 (42000):Incorrect table definition;there can be only one auto column and it must be defined as a key1# 修改创建索引后的 SQL 语句:
alter table table_name engine=innodb;1