mysql - 无法将外键添加到映射表
问题描述
我无法在我的映射表中为 am:n-relation 创建外键。
我的问题:
我在测试机器上使用最新版本的 Shopware (Shopware 6),我想开发一个创建自定义实体的插件。我的自定义实体(表名:car)的创建过程和带有商店软件迁移的表过程没有问题。在下一步中,我创建了一个映射表(名称:car_product),它处理与标准商店用品“产品”表的 m:n 关系。
此时我无法添加指向产品表的外键。执行过程中没有错误。汽车表的外键工作正常。
我想,我的架构不正确或产品表出现问题..
CREATE TABLE IF NOT EXISTS car (
`id_car` BINARY(16) NOT NULL,
`hsn` VARCHAR(3) NOT NULL,
`tsn` VARCHAR(4) NOT NULL,
`manufacturer` VARCHAR(45) NULL,
`model` VARCHAR(45) NULL,
`year` INT NULL,
`created_at` DATETIME(3) NOT NULL,
`updated_at` DATETIME(3) NULL,
PRIMARY KEY (`id_car`),
UNIQUE (`hsn`, `tsn`));
CREATE TABLE IF NOT EXISTS car_product(
`product_id` BINARY(16) NOT NULL,
`product_version_id` BINARY(16) NOT NULL ,
`id_car` binary(16) Not Null ,
PRIMARY KEY (`product_id`, `product_version_id`, `id_car`),
INDEX `fk_product_car_idx` (`id_car` ) ,
INDEX `fk_product_car_product_idx` (`product_id` , `product_version_id`) );
CREATE TABLE product (
id binary(16) ,
version_id binary(16),
...
cars binary(16),
)
product 表中的 id、version_id 属性都是主键
SQL-Query 添加外键:
Alter Table `car_product` ADD FOREIGN KEY (`product_id`,`product_version_id`) REFERENCES `product` (`id`, `version_id`) ON DELETE CASCADE ON UPDATE CASCADE ;
Alter Table `car_product` ADD FOREIGN KEY (`id_car` ) REFERENCES `car` (`id_car`) ON DELETE CASCADE ON UPDATE CASCADE;
解决方案
推荐阅读
- javascript - VueJS V-bind:sync="{object}" -- 在父节点中观察子节点发出的数据
- c# - 为什么 GetSystemInfo().minimumApplicationAddress 返回的数字大于 GetSystemInfo().maximumApplicationAddress?
- flutter - Flutter 中的 Scaffold 和 Container 有什么区别?
- github - Git检测到大文件后推入新存储库
- vue.js - 从 api 获取 Vue 变量后未设置它们
- mongodb - windows下aws中连接EC2中的mongodb服务,可以连接,但是在Linux下无法连接成功
- amazon-s3 - Strapi - 媒体文件 URL 未显示在数据库中
- java - 为什么在启动 REST 服务时添加注解 FormDataParam 会引发异常?
- r - 令牌问题 httr salesforce API
- python - NameError:名称“统一”未定义