1

我正在开发一个使用 sqlite 来维护数据库的 .net 应用程序。在 Windows 上,我使用 System.Data.Sqlite 库,一切正常。在 Linux 上,我使用 Mono.Data.Sqlite。当我启动我的应用程序并调用“SELECT * FROM TagInfo”时,发生了一件奇怪的事情。sqlite 在没有任何明显原因的情况下开始重建索引。完成重建后,应用程序运行正常。可以想象,问题在于索引重建非常缓慢,可能需要长达 20 分钟。此外,当我重新启动应用程序时,会再次调用重建。我在重建期间附加在堆栈跟踪下方。

有谁知道是什么原因造成的,我该如何预防。

非常感谢您提供的任何信息。格雷戈尔

堆栈跟踪:

System.Data.Common.Index.MergeSort (to={int[4096]}, length=2821) in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data.Common/Index.cs:518
System.Data.Common.Index.Sort () in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data.Common/Index.cs:186
System.Data.Common.Index.RebuildIndex () in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data.Common/Index.cs:179
System.Data.Common.Index.Reset () in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data.Common/Index.cs:160
System.Data.DataTable.ResetIndexes () in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data/DataTable.cs:1485
System.Data.DataTable.set_EnforceConstraints (value=true) in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data/DataTable.cs:623
System.Data.DataTable.EndLoadData () in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data/DataTable.cs:968
System.Data.Common.DbDataAdapter.FillFromReader (table={}, reader={Mono.Data.Sqlite.SqliteDataReader}, start=0, length=0, mapping={int[4]}, loadOption=System.Data.LoadOption.PreserveChanges) in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data.Common/DbDataAdapter.cs:368
System.Data.DataTable.Load (reader={Mono.Data.Sqlite.SqliteDataReader}, loadOption=System.Data.LoadOption.PreserveChanges) in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data/DataTable.cs:2857
System.Data.DataTable.Load (reader={Mono.Data.Sqlite.SqliteDataReader}) in /root/mono/mono-2.10.8/mcs/class/System.Data/System.Data/DataTable.cs:2838
GenFiles.SQLiteDatabase.GetDataTable (sql="SELECT * FROM TagInfo") in 
4

0 回答 0