mysql - 无法创建 FOREIGN KEY MySQL 错误 150

标签 mysql

我在表 votes 上添加外键时遇到问题。

mysql> describe votes;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| user_id  | int(11) unsigned | NO   |     | NULL    |                |
| video_id | int(11) unsigned | NO   |     | NULL    |                |
| vote     | int(11)          | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+

mysql> describe user;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| email    | varchar(256)     | NO   | MUL | NULL    |                |
| password | varchar(32)      | NO   |     | NULL    |                |
| name     | varchar(24)      | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+

Votes.user_id 是 User.id 的外键。然而,当我运行时,机器人有相同的时间:

mysql> alter table `votes` 
       add CONSTRAINT `votes_FK_1` 
       FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);

MySQL 正在抛出一个很好的旧 150

ERROR 1005 (HY000): Can't create table 'crocko.#sql-6e1_3c5' (errno: 150)

我做错了什么?

最佳答案

您需要检查表中是否存储了任何数据。如果有,则需要删除它们。

或者,如果您的 MySQL 数据库引擎是 MyISAM,则创建表后将无法添加外键。

您可以查看如何将其更改为InnoDB..

关于mysql - 无法创建 FOREIGN KEY MySQL 错误 150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751169/

相关文章:

php - 验证 JSON 是否在 PHP 上具有确定的结构

mysql - ROR 初学者,为什么我的查询的一个版本有效,而另一个版本无效

php - 为用户显示适当的错误消息

php - PDO Fetch Assoc 返回字 "Array"

mysql - 了解特定列是否存在

Python - 如何使用 mysql 数据库运行端到端测试用例?

mysql - 什么样的数据库或者在mysql中实现的方式

mysql - MySQL中按可变长度子字符串分组

mysql - Mirth Connect 的 channel 中的连接仍然处于空闲状态

mysql - 如何在 mysql Db 中插入行,在 nodejs 中使用 light-orm