- 締切済み
mysqlで外部キーをつけたカラムの名前変更方法
mysqlで外部キーをつけた列の名前を alter table tablename change oldname newname int; で変更しようとすると、エラーがでます。 1025の150でrenameのエラーでSHOW INNODB STATUSをみると、indexが無いかデータ型が違うということでした。データ型は確認しています。 indexを名前変更と同時に作ることはできるんでしょうか?change~の後にadd indexではエラーが出ました。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
#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 親の表名(主キーの列名)
- chukenkenkou
- ベストアンサー率43% (833/1926)
MySQLのバージョンは何ですか? 以下の手順で行う必要があります。 (1)外部キー制約の削除 (2)列名変更 (3)外部キー制約の追加
補足
mysql5.0です。
- mickymac
- ベストアンサー率37% (90/240)
テーブル自体を先に作成し、そちらにデータを流し込む、ではダメなので しょうか。
お礼
詳しい回答ありがとうございます。