紐付けてるカラム同士の型やサイズなど、全てが同じように生成されているかを確認する。
たとえば下記のように怒られた時。
SQLSTATE[HY000]: General error: 1005 Can't create table X (errno: 150). Failing Query: ALTER TABLE tablename ADD FOREIGN KEY (key_id) REFERENCES table(id)
key_idとidのカラム型は一致しているか、サイズは一致しているか、オプションなどは一致しているかを確認して寸分の狂い無く同一に定義してやれば幸せになれる。
自分の場合、片方だけにunsigned属性が与えられていたのでエラーとなってしまっていた。