• 締切済み

mysqlで外部キーをつけたカラムの名前変更方法

mysqlで外部キーをつけた列の名前を alter table tablename change oldname newname int; で変更しようとすると、エラーがでます。 1025の150でrenameのエラーでSHOW INNODB STATUSをみると、indexが無いかデータ型が違うということでした。データ型は確認しています。 indexを名前変更と同時に作ることはできるんでしょうか?change~の後にadd indexではエラーが出ました。

みんなの回答

回答No.3

#2回答者です。 制約名(CONSTRAINT [制約名] FOREIGN KEY ~)は、自分で指定しているでしょうか? もし明示的に指定していないなら、制約名を確認する必要があります。 <制約名を得るSQL例> select * from information_schema.table_constraints where constraint_type like 'for%' 以下のような手順で定義変更を行います。 1.外部制約の削除 alter table 表名 drop foreign key 制約名 2.列名の変更 alter table 表名 change 旧列名 新列名 データ型など 3.外部制約の追加 alter table 表名 add foreign key(外部キーの列名) references 親の表名(主キーの列名)

sublate
質問者

お礼

詳しい回答ありがとうございます。

回答No.2

MySQLのバージョンは何ですか? 以下の手順で行う必要があります。 (1)外部キー制約の削除 (2)列名変更 (3)外部キー制約の追加

sublate
質問者

補足

mysql5.0です。

  • mickymac
  • ベストアンサー率37% (90/240)
回答No.1

テーブル自体を先に作成し、そちらにデータを流し込む、ではダメなので しょうか。

関連するQ&A