如何修复部署到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
,CONSTRAINTFK_Books_Users_UserId
FOREIGN KEY(UserId
)REFERENCESusers
(id
))
在创建book
之前,用户已经创建并拥有Id
。
两个表都使用InnoDB引擎。
两个表都具有相同的排序规则。
用户与之连接的所有模型都会出现此问题。
已部署的数据库使用我的本地数据库转储填充。
数据库提供程序:Pomelo.EntityFrameworkCore.MySql
我认为问题必定在Windows和Ubuntu之间存在一些差异。但我不知道它可能是什么,除了不同的区分大小写,事实证明这不是一个问题,因为我尝试了不同的lower_case_table_names
配置。
问题出在mysqldump
上。如问题中所述,导出了本地数据库,然后将其导入生产环境。某些表和列名称以小写形式导出。我找不到mysqldump
这样做的原因。
解决方案是将所有损坏的名称重命名为有效名称,然后才导入转储。
以上是关于如何修复部署到Linux服务器后MySql中的“无法添加或更新子行:外键约束失败”?的主要内容,如果未能解决你的问题,请参考以下文章
Linux——MySQL MHA高可用配置及故障切换以及修复
部署到 Ubuntu 18.04 服务器后如何在 Laravel 中修复“未捕获的 ReflectionException:类视图不存在”
如何将无服务器代码部署到 AWS API Gateway 中的阶段