C# mysql错误:找不到13 MyISAM表文件
我有一组大约20MB的文件,每个文件都需要插入mysql中的表中。对于所有单线程文件,插入是在循环中完成的。这通常是很好的,但有时我会遇到以下异常:文件‘.table。Myd’没有找到Errcode:对于集合中间的一个文件13,第一个50 RANK OK,接下来2-3将失败,然后下面将再次运行。如果我只是在mysql workbench中重新运行对失败文件的查询,或者重新运行失败的文件,那么它们可以正常工作。表是刚刚创建的,没有索引,因此不应该存在诸如“索引失败”、表碎片或任何其他问题 以下是完整的堆栈跟踪:C# mysql错误:找不到13 MyISAM表文件,c#,mysql,exception,file-not-found,loaddata,C#,Mysql,Exception,File Not Found,Loaddata,我有一组大约20MB的文件,每个文件都需要插入mysql中的表中。对于所有单线程文件,插入是在循环中完成的。这通常是很好的,但有时我会遇到以下异常:文件‘.table。Myd’没有找到Errcode:对于集合中间的一个文件13,第一个50 RANK OK,接下来2-3将失败,然后下面将再次运行。如果我只是在mysql workbench中重新运行对失败文件的查询,或者重新运行失败的文件,那么它们可以正常工作。表是刚刚创建的,没有索引,因此不应该存在诸如“索引失败”、表碎片或任何其他问题 以下是完
File '.dbtable.MYD' not found (Errcode: 13)
----------------------------------
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at Utils.SqlUtils.ExecMysql(String sql, String connection)
at Utils.MySqlExecQueue.DoExec(Object data)
----------------------------------
MySql.Data
其中:
+ExecMysql-看起来像
using (MySqlConnection cnn = new MySqlConnection(connection))
{
cnn.Open();
using (MySqlCommand cmd = new MySqlCommand(sql, cnn))
{
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
+DoExec是一种方法,它从队列中提取文件,创建sql语句并调用上面的ExecMysql。
+插入代码和mysql在同一台机器上Windows 2008,x64;
+在该机器上运行的任何其他工具都无法锁定某些博客上的表文件;
+c.NET4代码使用mysql连接器6.5.4,mysql版本为5.5
我已经实现了一个类似“try-to-insert-while-13error-exception-is-抛出”的虚拟解决方案,但我强烈感觉这不是正确的解决方案
有什么想法吗?发生了什么,如何一劳永逸地解决这个问题
更新-很明显,“try-to-insert-while-13error-exception-is-thrown”修复程序不是一个好主意ea:在成功插入数据之后,我刚刚在表上运行SELECT时遇到了相同的异常
更新2-检查了日志,我注意到另一个wierd异常:将“.\db\table.MYD”重命名为“.\db\sql2-4e4-1677.MYD”时出错错误代码:17。。。情况正在好转 你有任何防病毒软件吗?如果是这样,请确保从AV中排除mysql目录及其临时文件夹,然后重试。否,该计算机上没有防病毒软件。