mysql - 无法在mysql上创建外键

标签 mysql

嗨,我正在尝试创建一个简单的 MySQL 数据库。我编写了以下脚本

CREATE TABLE office (
   num_office varchar(10) NOT NULL,
   name varchar(45),
   address varchar(45),
   numder varchar(4),
   city varchar(45)
 );



CREATE TABLE office_phone(
n_office varchar(10) NOT NULL,
phone varchar(15) NOT NULL,
PRIMARY KEY(n_office,phone),
FOREIGN KEY (n_office) REFERENCES office(num_office)
ON DELETE RESTRICT 
ON UPDATE CASCADE
);

但出现错误代码1822。 我该如何修复它? 在此先谢谢您

最佳答案

外键只能引用主键列或至少有索引的列(感谢@Uueerdo)。例如:

ALTER TABLE OFFICE ADD CONSTRAINT offnum_unq UNIQUE (NUM_OFFICE);

这会强制引用的列具有唯一值,并在其上创建索引。或者你也可以这样做:

CREATE INDEX offnum_idx ON OFFICE(NUM_OFFICE);

现在你的第二个CREATE应该可以工作了。

关于mysql - 无法在mysql上创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53784397/

相关文章:

图片上传中的PHP未定义索引

mysql - 使用Parent ID获取所有子节点

python - 如何将 Python3 与 apache 一起使用,使用 MySQL 作为数据库语言?

具有多个输入的 PHP 多文件上传

sql - MySQL 创建并填充数据库

php - 按类别列出项目

sql - 数据库查询,给出意想不到的结果

php - HTML 表单文本区域。使用 PHP 将数据发送到 MySQL。通知: Undefined index

mysql - 单表或多表规范化

java - 如何从html文本框在mysql表中插入记录?