ALTER TABLE
によって、テーブルが現在のキャラクタセットに変更されます。
ALTER TABLE
中に duplicate key error
が発生する場合、新しいキャラクタセットが 2
つのキーを同じ値にマップしているか、テーブルが壊れています。テーブルが壊れている場合は、そのテーブルで
REPAIR TABLE
を実行してください。
以下のようなエラーで ALTER TABLE
が強制終了される場合
Error on rename of './database/name.frm' to './database/B-a.frm' (Errcode: 17)
原因として、MySQL が前回の ALTER
TABLE
でクラッシュしており、使用されていない
A-something
または
B-something
という名前の古いテーブルがあることが考えられます。この場合、MySQL
データディレクトリに移り、A-
または B-
で始まる名前のファイルをすべて削除してください(削除しないで別の場所に移動することもできます)。
ALTER TABLE
は、以下のように動作します。
変更要求のあった A-xxx
という名前の新しいテ-ブルを作成する。
旧テーブルのすべてのレコードが
A-xxx
にコピーされる。
旧テーブル名が B-xxx
に変更される。
A-xxx
が旧テーブル名に変更される。
B-xxx
が削除される。
名前変更操作に何か問題が発生した場合は、MySQL
は変更を取り消します。致命的な問題が発生した場合(もちろん起こってはならないことですが)、MySQL
は旧テーブルを B-xxx
のままにしておく可能性がありますが、システムレベルでの簡単な名前変更でデータは元に戻ります。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.