我尝试在mysql数据库中插入数据,使用c#作为前端。查询在windows服务应用程序中运行,整个执行在线程上运行。在执行服务几个小时后,我遇到了一个错误。这项服务每隔10分钟运行一次。假设它在早上6:00执行,那么它将在早上6:10再次执行,这样它就按顺序移动。在每次运行中,它在数据库中插入大约50行。
下面给出了执行几个小时后抛出的错误。这是我的错误日志中的一个示例。
insertdata中的mysqlexception在命令执行期间遇到致命错误。::在mysql.data.mysqlclient.mysqlcommand.executereader(commandbehavior behavior)在mysql.data.mysqlclient.schemaprovider.getprocedures(string[]限制)在mysql.data.mysqlclient.isschemaprovider.getprocedures(string[]限制)位于mysql.data.mysqlclient.isschemaprovider.getschemainternal(string collection,string[]限制)位于mysql.data.mysqlclient.schemaprovider.getschema(string collection,string[]限制)位于mysql.data.mysqlclient.mysqlconnection.getschema(string collectionname,在mysql.data.mysqlclient.procedurecache.getprocdata(mysqlconnection connection,string spname)在mysql.data.mysqlclient.procedurecache.addnew(mysqlconnection connection,string spname)在mysql.data.mysqlclient.procedurecache.getprocedure(mysqlconnection conn,在mysql.data.mysqlclient.storedprocedure.getparameters(string procname)在mysql.data.mysqlclient.storedprocedure.resolve(boolean preparing)在mysql.data.mysqlclient.mysqlcommand.executereader(commandbehavior behavior)在mysql.data.mysqlclient.mysqlcommand.executenonquery()在insertdata(string name,string info,字符串输出)::内部异常1:尝试读取结果集时遇到致命错误。::内部异常2:读取流失败。::内部异常3:无法从传输连接中读取数据:对wsacancelblockingcall的调用中断了阻塞操作。::内部异常4:执行了阻塞操作被wsacancelblockingcall的呼叫中断]
我在日志中添加了多达四个级别的内部异常,以便可以显示一些线索。内部异常begin有标题inner exception 1、inner exception 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”。
任何帮助都将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!