如何检索有关此批量加载错误的更多信息?

Posted

技术标签:

【中文标题】如何检索有关此批量加载错误的更多信息?【英文标题】:How do I retrieve more information about this bulk load error? 【发布时间】:2021-09-12 22:25:15 【问题描述】:

我正在尝试使用 mysqlConnector 库中的 MySqlBulkCopy 类将一些数据批量加载到 MySql 服务器中。

对于第一个表,它工作得很好。对于第二个表,它会出错,说 10 行中有 0 行被写入。 (使用小型数据集进行测试;实际使用会涉及比这更多的行。)

调试库代码,我发现操作结果中的the warning count 是30,受影响的行数是0,但是库对这些警告没有做任何事情。它们永远不会出现在面向用户的错误消息中,并且由于回复数据包基本上只是元数据,我怀疑需要一些额外的 API 调用来检索警告。

假设我对 MySql 服务器和库的源具有完全访问权限,我需要做什么才能阅读这些警告并找出我的批量加载操作出了什么问题?

(注意:请不要建议通过切换到另一个 MySql ADO.NET 驱动程序来“解决”这个问题。对于我的用例,这只会以一个问题换另一个问题,可能更糟。)

【问题讨论】:

请向我们展示您的代码 以下内容可能对MySqlBulkCopy 有所帮助:github.com/mysql-net/MySqlConnector/issues/780。也许尝试改用MySqlBulkLoader @RiggsFolly 我不是在寻求代码方面的帮助;我正在寻求帮助以检索第 3 方库未能提供的诊断信息。它的来源已经可用,并链接到我的问题中。 @user9938 不知道一年前有什么不同,但是在当前版本的代码中,MySqlBulkCopy是在MySqlBulkLoader之上实现的,所以说起来没有多大意义改为使用它。 【参考方案1】:

有两种方法:

显示警告

MySqlBulkCopy.WriteToServer 完成后,调用ExecuteReader 以获取SHOW WARNINGS 命令。根据the documentation,这将“[显示]有关在当前会话中执行最新的非诊断语句所产生的条件的信息”。

InfoMessage 事件处理程序

在执行MySqlBulkCopy.WriteToServer 之前,将事件处理程序附加到MySqlConnection.InfoMessage。在WriteToServer 期间,将使用MySqlInfoMessageEventArgs 对象调用事件处理程序。这包含一个 Errors 属性,其中包含已发生的错误和警告的列表。

【讨论】:

谢谢,事件处理程序正是我所需要的。原来问题是违反了 FK,因为我在其他地方犯了一个错误,并且以错误的顺序插入了东西。

以上是关于如何检索有关此批量加载错误的更多信息?的主要内容,如果未能解决你的问题,请参考以下文章

错误消息“无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。

Azure 表:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息

如何使用 javascript 检索有关 mp3 的信息?

如何解决更新环境操作已完成,但出现错误。有关 AWS Elasticbeanstalk 中的更多信息错误

如何在服务器端 Blazor 中使用 HttpContext 对象来检索有关用户、用户代理的信息

无法加载,因为在此系统上禁用了正在运行的脚本。有关详细信息,请参阅 about_Execution_Policies,网址为