我们使用实体框架和MySQL连接器在.Net中编写了一个应用程序。但有时查询无法在应用程序中执行,我们不知道为什么。数据库安装在Debian服务器上。MySQL错误的表'/tmp/#.....MYI'的密钥文件;尝试修复它
我们在日志文件瑟以下消息:
System.Data.EntityCommandExecutionException: Er is een fout opgetreden tijdens het uitvoeren van de opdrachtdefinitie. Zie de interne uitzondering voor details. ---> MySql.Data.MySqlClient.MySqlException: Incorrect key file for table '/tmp/...MYI'; try to repair it
bij MySql.Data.MySqlClient.MySqlStream.ReadPacket()
bij MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
bij MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
bij MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
bij MySql.Data.MySqlClient.MySqlDataReader.NextResult()
bij MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
bij MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
bij System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
bij System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
--- Einde van intern uitzonderingsstackpad ---
bij System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
bij System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
bij System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
bij System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
bij System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
bij System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable`1 sequence)
bij System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
bij System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression)
bij System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
这里的计算器,并在古尔,我看到几个帖子用相同的“错误”。它们中的大多数与临时分区上的可用空间有关。但是当我查看数据库服务器时,/ tmp分区仅用于3%,并具有足够的可用空间。
我追溯了导致这些错误消息的查询,但我现在可以执行查询。我没有看到临时驱动器/分区的任何用法。另外,查询的表格非常小,每个表只有几千行(但我们在外键上连接了4个表)。 这给我带来了下一个问题,我们在大多数表中使用InnoDB表。只有4个表使用MyIsam结构。这些表包含大量数据(每个表大约10GB)。但是目前查询(和实体框架上下文)未触及这些表。
它可以与备份或某个特定时刻运行有关吗?并且有人知道InnoDb和MyIsam表为某些查询使用临时存储,以便通过查询InnoDb表可以发生此错误?
可能出现[进行多个连接时tmp表的MySQL错误密钥文件](https:// stackoverflow。COM /问题/ 2090073/MySQL的,不正确密钥文件换-TMP的表时,制作海报联接) – 2018-03-01 09:19:36