我有一个 Windows 窗体应用程序,其中底层数据库是 MySql。版本如下:
MySql 服务器 v5.6
.NET v6.5.4 的 MySql 连接器
Windows 7 64 位
我在下面的堆栈跟踪中以间歇模式收到错误。它每次都发生在应用程序的不同部分。有时需要几天才能发生,有时我一天会得到 3 或 4 次。
在我收集此堆栈跟踪错误的特定事件中,屏幕上仍显示带有错误的对话框,我设法并行打开我的 Windows 窗体应用程序的第二个实例,只是注意到第二个实例正在工作完美无缺。这就是模式(或缺乏模式):每当出现此问题时,只需关闭并重新启动应用程序,甚至并行打开另一个实例,就足以恢复数据库访问。如果发生此故障时我没有退出应用程序,那么应用程序访问 MySql 数据库的所有后续尝试都会失败,无论如何。错误对话框选项“忽略此错误并尝试继续”让我得出结论,似乎 MySql 数据库后端和 Windows 窗体应用程序的特定实例“断开连接”,即使是随后的尝试。
我知道堆栈跟踪信息是一系列事件,最近的事件位于顶部,因此假设故障点位于此事件是否正确?
at MySql.Data.MySqlClient.NativeDriver.ExecutePacket(MySqlPacket packetToExecute)
我试着到处研究这个特定的“MySql NativeDriver.ExecutePacket .. Object reference not set”,我只能得到关于人们在看似不相关的不同执行上下文问题上遇到这个问题的报告,其中许多甚至报告为 MySql 错误提交修复.
无论如何,我将不胜感激对手头问题的任何见解,甚至是关于如何正确调试甚至调整 MySql 的配置属性的建议。我对任何想法持开放态度。
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at MySql.Data.MySqlClient.NativeDriver.ExecutePacket(MySqlPacket packetToExecute)
at MySql.Data.MySqlClient.NativeDriver.SendQuery(MySqlPacket queryPacket)
at MySql.Data.MySqlClient.Driver.SendQuery(MySqlPacket p)
at MySql.Data.MySqlClient.Statement.ExecuteNext()
at MySql.Data.MySqlClient.PreparableStatement.ExecuteNext()
at MySql.Data.MySqlClient.PreparableStatement.Execute()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at CodeFluent.Runtime.MySQL.CodeFluentMySQLPersistenceHook.SetForeignKeyChecks(MySqlConnection mySqlConnection)
at CodeFluent.Runtime.MySQL.CodeFluentMySQLPersistenceHook.AfterOpenConnection(IDbConnection connection)
at CodeFluent.Runtime.CodeFluentPersistence.OpenConnection()
at CodeFluent.Runtime.CodeFluentPersistence.InternalExecuteReader(CommandBehavior behavior, Boolean firstTry)
at CodeFluent.Runtime.CodeFluentPersistence.ExecuteReader(CommandBehavior behavior)
at CodeFluent.Runtime.CodeFluentPersistence.ExecuteReader()
at S5T.AssociadoSetorCob.LoadBypCodigo(Int32 pCodigo)
at S5TWin.FormGeraArqBanco.cmbSetor_MontaPesquisaTextBox(String& desc)
at S5TWin.ComboCF.txtCodigo_Leave(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnLeave(EventArgs e)
at System.Windows.Forms.Control.NotifyLeave()
at System.Windows.Forms.ContainerControl.UpdateFocusedControl()
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1022 (RTMGDR.030319-1000)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1001 built by: RTMGDR
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
加载程序集的长列表,为简洁起见缩短