C# MySqlException:表不存在 - 数据库名称列出了两次

Posted

技术标签:

【中文标题】C# MySqlException:表不存在 - 数据库名称列出了两次【英文标题】:C# MySqlException: Table doesn't exist - Database name listed twice 【发布时间】:2021-05-06 22:29:23 【问题描述】:

我在尝试从我通过 C# 应用程序访问的 mysql 数据库返回简单数据时遇到问题。

这是导致问题的代码及其在 Visual Studio 中产生的错误:

using (U04BWFEntities db = new U04BWFEntities())

    city theCity = new city();
    customer userQuery = db.customers.First();
    tbox_DebugDB.Text = userQuery.ToString();

而报错如下:

System.Data.Entity.Core.EntityCommandExecutionException H结果=0x8013193C Message=执行命令定义时发生错误。有关详细信息,请参阅内部异常。 来源=实体框架

内部异常 1: MySqlException:表 'U04BWF.U04BWF.customer' 不存在

作为数据库名称的 U04BWF 片段在执行此查询时似乎出现了两次,因此错误是准确的 -- U04BWF.U04BWF.customer 不存在,但 U04BWF.customer 存在。

我真正的问题:我不知道为什么代码会尝试像这样运行查询。我无法追踪它决定对 U04BWF.U04BWF.customer 运行查询的位置,而不是 应该 (U04BWF.customer)。

正如您从代码中看到的那样,我正在使用实体框架,据我所知,它正确地创建了实体,但我对 EF 很陌生,当我看到一个问题时可能根本不知道问题。

我可以将连接切换到 ADO 并使用非 EF 方法成功执行查询。

我主要是在寻求有关如何追踪此问题的指导。提前谢谢!

【问题讨论】:

请不要发布您的代码图片。粘贴代码文本,并使用工具栏中的代码按钮来获得语法高亮。然后将错误消息粘贴为单独的块,并告诉我们是什么原因造成的。 这里的代码有点无关紧要。因此,为什么我没有分享它... 您仍应删除图像并将代码和异常粘贴到单独的块中。很多可能会帮助您的人将无法看到该图像。 好酷 - 我相信我已经在这里更新了你的建议。欢迎任何其他想法。谢谢! 好多了,谢谢。 【参考方案1】:

这是 MySql.Data.EntityFramework 8.0.22 中的一个错误:bug 101236。

作为一种解决方法,您可以降级到 8.0.21。 Oracle 声称它将在下一个版本 8.0.24 中修复。

【讨论】:

谢谢!这是我需要的答案。此外,降级到 8.0.21 的指导起到了作用——我现在能够使用 EF 方法(例如原始示例中的方法)成功地操作 MySql 数据库。再次感谢。

以上是关于C# MySqlException:表不存在 - 数据库名称列出了两次的主要内容,如果未能解决你的问题,请参考以下文章

Oracle-EXP-00011 表不存在

MySQL - 表不存在且无法创建

如果表不存在执行长查询

MySQL 仅在表不存在时插入数据

Django:表不存在

表不存在 Sequelize