tencent cloud

TencentDB for MySQL

文档TencentDB for MySQLプラクティスチュートリアルMyISAMからInnoDBエンジンへの切り替え制限

MyISAMからInnoDBエンジンへの切り替え制限

Download
聚焦模式
字号
最后更新时间: 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;



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈