C#-使用MySQL执行命令时发生致命错误

时间:2018-08-09 11:18:58

标签: c# mysql fatal-error

我尝试使用C#作为前端在MySQL DB中插入数据。该查询在Windows服务应用程序中运行,并且整个执行在线程上运行。几个小时的服务执行后,我得到一个错误。该服务以10分钟的间隔运行。假设它已在上午6:00执行,那么它将以上午6:10的顺序再次执行。在每次运行中,它将在数据库中插入约50行。

执行几个小时后引发的错误如下。这是我的错误日志中的示例。

  

InsertData中的MySqlException命令期间遇到致命错误   执行:::   MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior   行为)          在MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()          在MySql.Data.MySqlClient.SchemaProvider.GetProcedures(String []限制)          在MySql.Data.MySqlClient.ISSchemaProvider.GetProcedures(String []   限制)          在MySql.Data.MySqlClient.ISSchemaProvider.GetSchemaInternal(String   集合,String []限制)          在MySql.Data.MySqlClient.SchemaProvider.GetSchema(String集合,String []限制)          在MySql.Data.MySqlClient.MySqlConnection.GetSchema(String collectionName,String [] strictionValues)          在MySql.Data.MySqlClient.ProcedureCache.GetProcData(MySqlConnection   连接,字符串spName)          在MySql.Data.MySqlClient.ProcedureCache.AddNew(MySqlConnection连接,字符串spName)          在MySql.Data.MySqlClient.ProcedureCache.GetProcedure(MySqlConnection   conn,字符串spName)          在MySql.Data.MySqlClient.StoredProcedure.GetParameters(字符串procName)          在MySql.Data.MySqlClient.StoredProcedure.Resolve(布尔准备)          在MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior   行为)          在MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()          在InsertData(String Name,String Info,String Output)处::内部异常1:致命错误   尝试读取结果集时遇到。::内部异常2:   从流中读取失败。::内部异常3:无法   从传输连接读取数据:阻止操作是   由对WSACancelBlockingCall的调用中断。::内部异常4:A   调用WSACancelBlockingCall中断了阻止操作]

我在日志中添加了多达四个级别的内部异常,以便可以发现一些线索。内部异常开始的标题为内部异常1,内部异常2,依此类推。

下面是我的代码。

internal static int UpdateDataInToDB(DataInformation info)
{
    MySqlCommand mySqlCommand = new MySqlCommand("ProcInsertData", mySqlCon);
    try
    {
        int rowCount = 0;

        mySqlCommand.CommandType = CommandType.StoredProcedure;
        mySqlCommand.Parameters.Add("@Param1", DbType.Int64).Value = info.ID;
        mySqlCommand.Parameters.Add("@Param2", DbType.String).Value = info.Name;
        mySqlCommand.Parameters.Add("@Param3", DbType.String).Value = info.Address;
        mySqlCommand.Parameters.Add("@Param4", DbType.Int32).Value = info.Age;
        mySqlCommand.Parameters.Add("@Param5", DbType.DateTime).Value = info.DOB;
        mySqlCommand.Parameters.Add("@Param6", DbType.Int32).Value = info.RollNo;

        mySqlCommand.CommandTimeout = 120;
        rowCount = Convert.ToInt32(mySqlCommand.ExecuteNonQuery());


    }
    catch (MySqlException ex)
    {
        //MySqlException logging
        ResetDBConnection();
    }
    catch (Exception ex)
    {
        //Exception logging
    }
    finally
    {
        if (mySqlCommand != null) mySqlCommand.Dispose();
        mySqlCon.CloseConnection();
    }

return rowCount;
}

我在代码中没有使用任何DataReader,但是我不知道该ExecuteReader从何处出现代码抛出的错误文本。我在连接字符串中设置了“ pooling = false”。

任何帮助将不胜感激。

0 个答案:

没有答案