mysqldump不保持ON UPDATE RESTRICT

问题描述 投票:0回答:1

我有以下创建表查询:

`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;`

当我运行导出/ mysqldump时,它给了我。运行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;`

注意已删除的'ON UPDATE RESTRICT'。当我从“订单”中删除一行后,“ order_meta”中的行不会被删除。当我删除外键并重新添加on更新时,它再次起作用。这是预期的行为还是我在这里错过了什么?

`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;`
mysql
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.