繁体   English   中英

MySQL无法创建外键错误121,但不存在

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

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