首页 > 解决方案 > 无法将外键添加到映射表

问题描述

我无法在我的映射表中为 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;

标签: mysqlshopware

解决方案


推荐阅读