自作自演

Firefox の話題を中心に Web 関係の話も扱うつもりの雑記。だった。
zisakuzien.exblog.jp

Top

MySQL 5.5 で外部キー制約使おうとしたらエラーではまった。

ALTER TABLE `hoge_table` ADD FOREIGN KEY ( `id` ) REFERENCES `hoge`.`fuga_table` (`id`
) ON DELETE SET NULL ON UPDATE CASCADE ;

みたいにして、外部キー制約を追加しようとしたらエラーになりました。
原因は、NOT NULL のカラムなのに ON DELETE SET NULL を指定していたため。
原因がわかるまで手間取ったのでメモしておきます。

上記の SQL を実行したところ、下記のようなエラーが出ました。(xxxの部分は英数字)
ERROR 1005 (HY000): Can't create table 'hoge.#sql-xxx_xxxx' (errno: 150)

エラーメッセージで検索したところ、下記のページがヒットしました。
InnoDBの複合FOREIGN KEY制約について - Yet Another Hackadelic
FOREIGN KEYを張る際に怒られた時はSHOW ERRORSよりもSHOW INNODB STATUSを見ましょう。
とのことなので、SHOW INNODB STATUS をやってみました。
mysql> SHOW INNODB STATUS\G
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'INNODB STATUS' at line 1

エラーになりました。調べたところ、
SHOW INNODB STATUS

SHOW ENGINE INNODB STATUS
となったそうです。
MySQL :: MySQL 5.5 Reference Manual :: 14.3.14.2 SHOW ENGINE INNODB STATUS and the InnoDB Monitors

SHOW ENGINE INNODB STATUS\G を実行して、
「LATEST FOREIGN KEY ERROR」の項目を確認したところ、
「You have defined a SET NULL condition though some of the
columns are defined as NOT NULL.」とあったので、エラー詳細がわかりました。
[PR]
by tokage-shippo | 2013-01-15 17:50 | プログラミング
Mozilla Firefox ブラウザ無料ダウンロード

about this...

書き手の名前は 晴柳祐志 と言います。


リンク

Twitter
いつか何とかしたいサイト

最新のトラックバック

[foxkeh]フォクす..
from 「 Firefox ×?=!..
[Firefox]Fir..
from +Sun Flower〜報告〜+
Firefoxバトン
from MなMによるMのための日記
スキン変更!
from SUKA・SUKA・BLOG
Firefox 1.5に..
from mmkg

検索

S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
XML | ATOM

個人情報保護
情報取得について
免責事項