MySQL添加外键错误1215

标签 mysql sql foreign-keys

我知道以前有人问过这样的问题。我确保它们具有相同的数据类型并检查了我的语法,但我仍然收到错误:

 ALTER TABLE meetings ADD FOREIGN KEY (ownerName) REFERENCES employees(name);

ERROR 1215 (HY000): Cannot add foreign key constraint

mysql> desc `meetings`;
    +-----------+-------------+------+-----+---------+----------------+
    | Field     | Type        | Null | Key | Default | Extra          |
    +-----------+-------------+------+-----+---------+----------------+
    | id        | int(11)     | NO   | PRI | NULL    | auto_increment |
    | room      | int(6)      | NO   |     | NULL    |                |
    | ownerName | varchar(30) | NO   |     | NULL    |                |
    | ownerID   | varchar(30) | NO   |     | NULL    |                |
    +-----------+-------------+------+-----+---------+----------------+
    4 rows in set (0.00 sec)

    mysql> desc `employees`;
    +----------+--------------+------+-----+---------+-------+
    | Field    | Type         | Null | Key | Default | Extra |
    +----------+--------------+------+-----+---------+-------+
    | name     | varchar(30)  | NO   |     | NULL    |       |
    | username | varchar(30)  | NO   | PRI | NULL    |       |
    | pswd     | varchar(255) | YES  |     | NULL    |       |
    +----------+--------------+------+-----+---------+-------+

我做错了什么?

最佳答案

name 不是 employees 表中的主键,所以 .. 尝试使用 username

ALTER TABLE meetings ADD FOREIGN KEY (ownerName) REFERENCES employees(username);

或按照 DanielE 的建议,或者您可以使用 name 列,但此列需要一个 UNIQUE 索引

关于MySQL添加外键错误1215,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49004958/

相关文章:

mysql - 如何使用与主键具有不同列名的外键?

mysql - 创建ejabberd用户

sql - 为什么 hibernate hql distinct 会导致 sql 在左连接中不同?

mysql - 如何使用子查询获取 MIN/MAX

c# - 从 Entity Framework 中的 POJO 类中删除导航属性

android - 如何在sqlite中使用外键?

python - Sqlite3 INSERT查询错误?

mysql - 在 Qt 4.7.2 中构建 MySQL-Plugin 的问题

Mysql 获取 In 子句中缺少的值

sql - PostgreSQL:具有多个日期参数的函数