如何修复部署到Linux服务器后MySql中的“无法添加或更新子行:外键约束失败”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复部署到Linux服务器后MySql中的“无法添加或更新子行:外键约束失败”?相关的知识,希望对你有一定的参考价值。

我已经在我的本地Windows机器上运行了mysql数据库和ASP.NET Core 2.2应用程序。但是当我将它们发布到Ubuntu 18.10并尝试为我的User插入任何子记录时,我得到以下异常:

MySql.Data.MySqlClient.MySqlException(0x80004005):无法添加或更新子行:外键约束fils(library.Books,CONSTRAINT FK_Books_Users_UserId FOREIGN KEY(UserId)REFERENCES usersid))

在创建book之前,用户已经创建并拥有Id

两个表都使用InnoDB引擎。

两个表都具有相同的排序规则。

用户与之连接的所有模型都会出现此问题。

已部署的数据库使用我的本地数据库转储填充。

数据库提供程序:Pomelo.EntityFrameworkCore.MySql

我认为问题必定在Windows和Ubuntu之间存在一些差异。但我不知道它可能是什么,除了不同的区分大小写,事实证明这不是一个问题,因为我尝试了不同的lower_case_table_names配置。

答案

问题出在mysqldump上。如问题中所述,导出了本地数据库,然后将其导入生产环境。某些表和列名称以小写形式导出。我找不到mysqldump这样做的原因。

解决方案是将所有损坏的名称重命名为有效名称,然后才导入转储。

以上是关于如何修复部署到Linux服务器后MySql中的“无法添加或更新子行:外键约束失败”?的主要内容,如果未能解决你的问题,请参考以下文章

Linux——MySQL MHA高可用配置及故障切换以及修复

部署到 Ubuntu 18.04 服务器后如何在 Laravel 中修复“未捕获的 ReflectionException:类视图不存在”

Spring Boot 如何部署到 Linux 中的服务

如何将无服务器代码部署到 AWS API Gateway 中的阶段

如何将keycloak迁移到mysql数据库并修复300异常后的超时

Linux下移动了数据库 pgsql目录到另一个文件下,恢复后,启动服务提示无