私はデータベースを維持するために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