我們使用實體框架和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