このドキュメントでは、MyISAMエンジンが自動的にInnoDBエンジンに変換された後にテーブルを作成する時にエラーが発生することに対応するソリューションについて説明します。
Tencent MySQLはInnoDBストレージエンジンをデフォルトでサポートしますが、MySQL 5.6以降のバージョンはMyISAMエンジンおよびMemoryエンジンがサポートされていません。詳細については、データベースストレージエンジンをご参照ください。
MySQL 5.6以降のバーションにマイグレーションを行うか、アップグレードすると、システムは自動的に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
です。
自動採番列へのインデックス作成を通じてInnoDBエンジンの複合プライマリキーに自動採番列構文を入れることをお勧めします。
create table t_complexkey
(
id int(8) AUTO_INCREMENT,
name varchar(19),
value varchar(10),
primary key (name,id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
次の図にように作成するとエラーが発生します。create table t_complexkey
(
id int(8) AUTO_INCREMENT,
name varchar(19),
value varchar(10),
primary key (name,id),
key key_id (id) ## 自動採番列にインデックスを作成します
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
次の図にように作成が完了します。show create table t_complexkey;
この記事はお役に立ちましたか?