简体   繁体   English

mysqldump 不保持 ON UPDATE RESTRICT

[英]mysqldump does not keep ON UPDATE RESTRICT

I have the following create-table-query:我有以下创建表查询:

`CREATE TABLE `order_meta` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `order_meta_key_index` (`order_id`,`meta_key`),
  CONSTRAINT `order_meta_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=34064 DEFAULT CHARSET=utf8;`

when i run an export / mysqldump, it gives me.当我运行导出/mysqldump 时,它给了我。 running SHOW CREATE TABLE order_meta gives me the same, so i guess thats where the problem lies.运行SHOW CREATE TABLE order_meta给了我同样的结果,所以我想这就是问题所在。

`CREATE TABLE `order_meta` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `order_meta_key_index` (`order_id`,`meta_key`),
  CONSTRAINT `order_meta_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=34064 DEFAULT CHARSET=utf8;`

notice the 'ON UPDATE RESTRICT' that has been removed.请注意已删除的“ON UPDATE RESTRICT”。 After when i delete a row from 'orders' the rows in 'order_meta' are not removed.当我从“订单”中删除一行后,“order_meta”中的行不会被删除。 When i remove the foreign key and re-add with the on update, it works again.当我删除外键并使用更新重新添加时,它再次工作。 Is this expected behavior or am i missing something here?这是预期的行为还是我在这里遗漏了什么?

`alter table order_meta drop FOREIGN KEY `order_meta_order_id`;`

`alter table order_meta add CONSTRAINT `order_meta_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;`

我想这与创建 mysqldump 的过时工作台有关。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM