2011年9月19日月曜日

MySQL ERROR 1005 (HY000): Can't create table

MySQLでcreate tableしようとしてエラーになったのでメモ。

エラー内容
ERROR 1005 (HY000): Can't create table './test/c.frm' (errno: 121)

とりあえず、innodb statusを見てみる。
mysql< show innodb status;
ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation
スーパー権限が必要とのこと。スーパー権限で作業してるのでちょっとよくわからない。

結論、外部キーのsymbolが問題だった。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.5.6.4 FOREIGN KEY 制約
もし CONSTRAINT symbol 条項が与えられると、symbol 値はデータベース上で固有である必要があります。もし条項が与えられなければ、InnoDB は名前を自動的に作成します。

bテーブルと定義が同じテーブルを作りたかったので、SHOW CREATE TABLE bで出力されるcreate文のテーブル名だけcに変えて実行したのがエラーの原因。
symbolが被ってしまってエラー。symbol部分も変えるか削除するかしてやらないとダメ。