[英]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.