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

问题描述 投票:0回答:1

我已经在我的本地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配置。

mysql linux ef-code-first entity-framework-core ef-core-2.2
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.