0

我得到 errno 150 并且不知道为什么。我读过一百万个其他答案说你必须在父列上设置一个索引,我这样做我不确定为什么我仍然会收到这个错误。

父表索引:

mysql> show indexes from plans;
+-------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name       | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| plans |          0 | PRIMARY        |            1 | plan_id     | A         |          86 |     NULL | NULL   |      | BTREE      |         |               |
| plans |          0 | plan_id_UNIQUE |            1 | plan_id     | A         |          86 |     NULL | NULL   |      | BTREE      |         |               |
| plans |          1 | plan_id        |            1 | plan_id     | A         |          86 |     NULL | NULL   |      | BTREE      |         |               |
+-------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.08 sec)

子表索引:

mysql> show indexes from promos;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| promos |          0 | PRIMARY  |            1 | promo_id    | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| promos |          1 | plan_id  |            1 | plan_id     | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.06 sec)

错误:

mysql> alter table promos add foreign key (plan_id) references plans (plan_id) on delete cascade on update cascade;
ERROR 1005 (HY000): Can't create table 'dev.#sql-2ce_599a' (errno: 150)
4

1 回答 1

1

您必须为两列使用相同的排序规则和字符集。

这有效:http ://sqlfiddle.com/#!2/0f917

于 2013-08-08T15:22:44.373 回答