[英]Mysql cannot create foreign key error 121 but doesn't exists
我有一个奇怪的问题,我正在尝试创建具有特定名称的外键,但是mysql表示:“ Can't create table #sql-85f_169' (errno: 121)
”,因此我知道该名称必须是唯一的,并且是因为没有人使用这个名字。
完整的故事:一台服务器(ubuntu server14)中有16个数据库,用于具有相同结构,相同表,相同内容的多个网页,但数据库名称不同。 最近,我们为新客户端添加了一个新数据库,因此我们复制了16个数据库中的另一个,我们通常下载一个数据库并替换数据库名称,并保持相同的结构。 我需要向表“ orders”中添加新的外键,因此我删除了之前的2个外键,名称分别为“ order_ibfk_1”和“ order_ibfk_2”,并添加了另外3个:
ALTER TABLE `orders`
ADD CONSTRAINT `order_ibfk_1` FOREIGN KEY (`id_reception`) REFERENCES `recepction` (`id_recepction`),
ADD CONSTRAINT `order_ibfk_2` FOREIGN KEY (`id_type_order`) REFERENCES `type_order` (`id_type_order`),
ADD CONSTRAINT `order_ibfk_3` FOREIGN KEY (`id_company`) REFERENCES `company` (`id_company`);
我在16个数据库中的每个数据库上都做到了这一点,并且运行良好,但是在新数据库中却没有,新数据库17 show (errno: 121)
但是我已经删除了所有外键,表为空,甚至删除了整个表,并且制作一个新的,并继续说同样的错误。 我检查了information_schema.TABLE_CONSTRAINTS
并且该KEY_COLUMN_USAGE
不存在名称“ order_ibfk_1”。 在SHOW ENGINE INNODB STATUS\\G
部分中, LATEST FOREIGN KEY ERROR
表示重复的名称。
“也许在缓存中?”,我们已经重新启动了服务和服务器,这只发生在生产服务器上,在本地工作正常。 该数据库和其他16个数据库在24小时内均可正常运行,因此我们不能每次都中断他们的工作。
我在考虑第一次删除数据库编号17,以便以后恢复它。 有时我还会收到此错误#2013 - Lost connection to MySQL server during query
当我尝试运行外键查询时, #2013 - Lost connection to MySQL server during query
,但只说在该数据库17上使用phpmyadmin或ssh时,对其他16的相同查询不会发生任何错误,我使用SET @@global.max_allowed_packet = 1048576*10;
执行查询但出现相同的错误121。 ¿mysql出没?
这是我所做的:
我下载了数据库以在本地使用它,我尝试运行sql,一切正常。
因此,我只是下载了数据库,在服务器上将其删除,重新上传并在服务器中运行sql,突然工作正常。 我猜是缓存或内存中有东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.