部署到linux服务器后如何修复MySQL中的'Cannot add or update a child row: a foreign key constraint fails'?



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

MySql.Data.MySqlClient.MySqlException (0x80004005): 无法添加或 更新子行:外键约束 fils (libraryBooks, 外键FK_Books_Users_UserId约束 (UserId) 引用users(id))

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

两个表都使用InnoDB引擎。

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

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

部署的数据库填充了我的本地数据库转储。

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

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

问题出在mysqldump上。如问题中所述,本地数据库被导出,然后导入到生产环境中。但是本地和生产MySQL版本是不同的。某些表名和列名以小写形式导出。

解决方案是将所有损坏的名称重命名为有效名称,然后才导入转储。或者,如果您不希望每次都这样做,请使用与生产数据库上的 on 对应的版本转储mysqldump本地数据库。

相关内容

  • 没有找到相关文章

最新更新