新しく質問する

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

役に立った:2件
  • 質問者:sublate
  • 投稿日時:2008/02/23 14:39
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

mysqlで外部キーをつけた列の名前を
alter table tablename change oldname newname int;
で変更しようとすると、エラーがでます。

1025の150でrenameのエラーでSHOW INNODB STATUSをみると、indexが無いかデータ型が違うということでした。データ型は確認しています。

indexを名前変更と同時に作ることはできるんでしょうか?change~の後にadd indexではエラーが出ました。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:2件)

回答(3件)

  • 参考になった:0件

#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 親の表名(主キーの列名)

通報する

この回答へのお礼

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

  • 参考になった:0件

MySQLのバージョンは何ですか?

以下の手順で行う必要があります。

(1)外部キー制約の削除
(2)列名変更
(3)外部キー制約の追加

通報する

この回答への補足

mysql5.0です。

  • 参考になった:0件
  • 回答者:mickymac
  • 回答日時:2008/02/23 14:41

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

通報する

  
このQ&Aは役に立ちましたか?(役に立った:2件)

このページのトップへ

Facebook公式ページ

公式Twitter