C# mono上的sqlite:调用SELECT会导致ResetIndexes和索引重建

C# mono上的sqlite:调用SELECT会导致ResetIndexes和索引重建,c#,linux,sqlite,mono,C#,Linux,Sqlite,Mono,我正在开发一个.net应用程序,它使用sqlite来维护数据库。在windows上,我使用System.Data.Sqlite库,一切正常。在Linux上,我使用Mono.Data.Sqlite。当我启动我的应用程序并调用“SELECT*FROM TagInfo”时,一件奇怪的事情发生了。sqlite在没有任何明显原因的情况下开始重建索引。完成重建后,应用程序将正常运行。正如您可以想象的那样,问题在于索引重建非常缓慢,可能需要20分钟。另外,当我重新启动应用程序时,会再次调用重建。在重建过程中,

我正在开发一个.net应用程序,它使用sqlite来维护数据库。在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 

索引不是在数据库级别重建的,而是在DataTable的内存中重建的。您是否尝试为所有列名指定显式名称而不是“*”?您是否尝试过其他加载选项?