ALTER TABLEについてメモ
現在進行中のプロジェクトのDBスキーマを修正しなくちゃいけなくて、変更内容を共有するために手動で差分たファイルを作るのですが、そのときのメモ。
カラム名/データ型を修正する
ALTER TABLE テーブル名 CHANGE 元カラム名 新カラム名 データ型 ---- ALTER TABLE `unko` CHANGE `foo` `bar` integer
カラムを追加する
ALTER TABLE テーブル名 ADD カラム名 データ型 オプション ---- ALTER TABLE `unko` ADD `foo` varchar(255) NOT NULL DEFAULT 'bar'
外部キー制約を追加する
ALTER TABLE テーブル名 CONSTRAINT 制約名 FOREIGN KEY (カラム名) REFERENCES テーブル名 (カラム名); ---- ALTER TABLE `comments` CONSTRAINT FK_comments_article_id FOREIGN KEY (`article_id`) REFERENCES `articles` (`id`)
ここではまった。
ERROR 1005 (HY000) at line 19: Can't create table './unko/#sql-5414_10.frm' (errno: 150)
外部キー制約でエラーずっとはいてて、かなり悩んだ。原因はキー同士でデータ型が違ってたこと。上記の例で言えば、comments#article_idはINTEGER、articles#idはINTEGER UNSIGNEDだった、みたいな。
とりあえずさっき書いてたのはこれくらい。ALTERとかMODIFYとかまだあるけど、とりあえずタスクがまだ山ほど残ってるのでこれくらいで。