MySQLでカラムの長さをロックしずに変更する方法
MySQL テーブルの列のサイズを変更する方法には、ロックなしの次の 2 つがあります。
- ALTER TABLE
- ネイティブで置き換える
- ロックを解除
ALTER TABLE table_name ALGORITHM=INPLACE, LOCK=NONE MODIFY COLUMN column_name varchar(255);
オンライン環境でフィールド長の変更が可能、テーブルのロック不要、ただし MySQL のバージョンが 5.6.17 以上である必要があります。
- pt-online-schema-change
- pt-online-schema-change
pt-online-schema-change --alter "MODIFY COLUMN column_name varchar(255)" D=database_name,t=table_name
既存テーブルから別の構造のテーブルへ変更する場合、一時テーブルを作成して既存テーブルからデータを移行することで、データ更新を継続的に行いつつテーブル構造の変更が可能です。