Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


B.5.7.1 ALTER TABLE での問題

ALTER TABLE を使用して文字セットまたは文字カラムの照合順序を変更するときに、重複キーエラーを受け取った場合、原因は新しいカラムの照合順序が同じ値に対して 2 つのキーをマップしたか、テーブルが破損していることです。後者の場合は、そのテーブルに対して REPAIR TABLE を実行してください。

ALTER TABLE が次のエラーで停止した場合、問題は ALTER TABLE の初期の処理中に MySQL がクラッシュしたことである可能性があり、A-xxx または B-xxx という名前の古いテーブルが残っていることがあります。

Error on rename of './database/name.frm'
to './database/B-xxx.frm' (Errcode: 17)

この場合は、MySQL のデータディレクトリに移動して、A- または B- で始まる名前を持つすべてのファイルを削除します。(それらのファイルを削除せずに、別の場所に移動することもできます。)

ALTER TABLE は次のように動作します。

  • 要求された構造の変更を適用した A-xxx という名前の新しいテーブルを作成します。

  • 元のテーブルから A-xxx にすべての行をコピーします。

  • 元のテーブルの名前を B-xxx に変更します。

  • A-xxx を元のテーブル名に変更します。

  • B-xxx を削除します。

名前変更の操作に問題があった場合、MySQL は変更を取り消そうとします。重大な問題がある場合 (発生することはないはずですが)、MySQL は古いテーブルを B-xxx として残すことがあります。システムレベルでテーブルファイルを単純に名前変更することによって、データは元に戻ります。

トランザクションテーブルに対して ALTER TABLE を使用したとき、または Windows を使用しているときに、LOCK TABLE が発行されていた場合、ALTER TABLE はテーブルをロック解除します。これが行われるのは、InnoDB およびこれらのオペレーティングシステムは使用されているテーブルをドロップできないためです。