アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

A 回答 (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 親の表名(主キーの列名)
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/02/25 04:51

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



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

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

この回答への補足

mysql5.0です。

補足日時:2008/02/24 07:18
    • good
    • 0

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


しょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!