首页 > 解决方案 > MySQL 未执行外键约束。编辑:用“其他”替换“模式”

问题描述

我正在创建 2 个表、客户和订单。目标是在订单客户列中创建一个约束,以仅在客户存在时才允许插入。

这是我正在尝试的代码

CREATE TABLE other.customers ( 
                                customers_id INT NOT NULL AUTO_INCREMENT,  
                                name         VARCHAR(45) NULL, 
                                PRIMARY KEY (customers_id)
                               );

接下来我正在创建订单表

CREATE TABLE other.orders ( 
                             orders_id INT NOT NULL, 
                             customer  INT NOT NULL, 
                             PRIMARY KEY (orders_id), 
                             INDEX customers_idx (customer ASC), 
                             CONSTRAINT customers FOREIGN KEY (customer) 
                             REFERENCES other.customers (customers_id) 
                             ON DELETE CASCADE ON UPDATE CASCADE
                            );

两次我都没有出错。但他显然不起作用,我看不到约束。所以我试图改变订单表

ALTER TABLE other.orders  ENGINE = InnoDB ; 
ALTER TABLE other.orders  ADD CONSTRAINT customer 
FOREIGN KEY (customer) REFERENCES other.customers (customers_id) 
ON DELETE CASCADE ON UPDATE CASCADE;

但是这次我得到一个 SQL 错误:

操作失败:将 SQL 脚本应用到数据库时出错。ERROR 1215:无法添加外键约束

我可能遗漏了一些微不足道的东西,但就是不能指望它。

标签: mysql

解决方案


推荐阅读