tencent cloud

MyISAMからInnoDBエンジンへの切り替え制限
最終更新日:2024-07-25 17:56:18
MyISAMからInnoDBエンジンへの切り替え制限
最終更新日: 2024-07-25 17:56:18
このドキュメントでは、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エンジンの複合プライマリキーに自動採番列構文を入れることをお勧めします。

InnoDBエンジンの複合プライマリキーに自動採番列が含まれるための変更プログラム

1. テーブルを作成する時にエラーが発生する場合のSQL文:
create table t_complexkey
(
id int(8) AUTO_INCREMENT,
name varchar(19),
value varchar(10),
primary key (name,id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
次の図にように作成するとエラーが発生します。


2. インデックス作成後のSQL文を変更します。
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;
次の図にように作成が完了します。


3. 新規作成されたテーブル構造を確認します。
show create table t_complexkey;


この記事はお役に立ちましたか?
営業担当者に お問い合わせ いただくか チケットを提出 してサポートを求めることができます。
はい
いいえ

フィードバック