From MySQL Manual we can see it happens a foreign key constraint was not correctly formed.
(http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html)
It reports something like ' ERROR 1005: Can't create table './.../#.....frm' (errno: 150)'
Now let's see the right syntax:
(http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html)
(http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html)
It reports something like ' ERROR 1005: Can't create table './.../#.....frm' (errno: 150)'
Now let's see the right syntax:
(http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html)
[CONSTRAINT [symbol
]] FOREIGN KEY
[index_name
] (index_col_name
, ...)
REFERENCEStbl_name
(index_col_name
,...)
[ON DELETEreference_option
]
[ON UPDATEreference_option
]reference_option
:
RESTRICT | CASCADE | SET NULL | NO ACTION
To fix this, please do such checks:
1.InnoDB
supports foreign key constraints.
This means you should created table as InnoDB if you are planning to add foreign key constraint on it.
2. Both source column and destination column should be indexed.InnoDB
requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan.