2009/06/22 追記
よく考えたら、Alter Table文で一発な気がする。何でこんなエントリ書いたんだろ。でも、どっかのサイト(たしか公式だったような)で以下のような記述をみたんだよなー
個人的メモ。
MySQLでカラムの順番を変更する手順
- MySQL Query BrouwserのCreate文作成機能とかでSQL取得
- Create文のカラム順を変更する
- さらにCreate文のテーブル名、外部キー名を変更してテーブルを複製
- Insert Into Select文で、複製したテーブルに元テーブルのデータをコピー
- 古いテーブルをDrop
- 複製したテーブルの名前を古いテーブル名へ変更
SQLにすると、以下みたいな感じ
# Create文でテーブル複製
create table `xxx`.`t_xxx_tmp` (
`id` int(10) unsigned not null auto_increment,
`name` varchar(10),
primary key (`id`)
) engine=innodb default charset=utf8;
# データのコピー
insert into t_xxx_tmp select id,name from t_xxx
# 古いテーブル削除して複製テーブルをリネーム
start transaction;
set foreign_key_checks = 0;
drop table t_xxx;
alter table t_xxx_tmp rename to t_xxx;
commit;