在MySQL中识别错误的外键;完整性约束冲突“;(1022)信息

在MySQL中识别错误的外键;完整性约束冲突“;(1022)信息,mysql,debugging,foreign-keys,phinx,Mysql,Debugging,Foreign Keys,Phinx,有没有办法在MySQL中获得更好的外键冲突调试信息 我使用Phinx进行数据库迁移,并处理一行中的多个约束和异常消息,如下所示: Integrity constraint violation: 1022 Can't write; duplicate key in table '#sql-1b8c_4534' in […] 这个问题由于缺少外键名和临时表名而变得模糊。有没有办法切换到更详细的模式 扩展堆栈跟踪也会有所帮助,因为现在对于截断的查询,它看起来是这样的: Stack trace: #0

有没有办法在MySQL中获得更好的外键冲突调试信息

我使用Phinx进行数据库迁移,并处理一行中的多个约束和异常消息,如下所示:

Integrity constraint violation: 1022 Can't write; duplicate key in table '#sql-1b8c_4534' in […]
这个问题由于缺少外键名和临时表名而变得模糊。有没有办法切换到更详细的模式

扩展堆栈跟踪也会有所帮助,因为现在对于截断的查询,它看起来是这样的:

Stack trace:
#0 /home/user/work/project/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(167): PDO->exec('ALTER TABLE `us...')
#1 /home/user/w[…]

通过以root用户身份在MySQL中运行“show engine innodb status”,您至少可以找到发生错误的表。它将显示如下内容:

------------------------
LATEST FOREIGN KEY ERROR
------------------------
2018-02-13 11:12:26 0x70000b776000 Error in foreign key constraint of table table/#sql-7fa_247a:
 foreign key (`my_foreing_key`) references `table` (`id`)
   on delete cascade:
Cannot resolve table name close to:
 (`id`)
   on delete cascade

(示例来自)

是MySQL模糊了表名,因为当您更改表时,MySQL首先创建表的副本(名称类似于“#sql-1b8c_4534”),完成所有需要执行的操作,并在完成后重命名它。这不是菲尼克斯的错。啊,很高兴知道。事实上,这应该足够了。我能看到我需要知道的一切。非常感谢。