2017-12-19 8 views
0

オンラインデータベースからデータを同期するプロジェクトを作成しようとしています。sqlite.swiftデータベーステーブルがロックされています(コード:6)

私は全体のプロセスの世話をするために4つのファイルがあります:

  1. dbConnection.swift
  2. createTables.swift
  3. dropAllTables.swift
  4. updateDatabase.swift

Iをテーブルを削除しようとすると問題が発生しています。

たとえば、という名前のテーブルが、createTables.swiftの関数にあります。

dropAllTables.swiftで別の関数で)次のコード:

let table = Table("FLEET_GROUPINGS_FOR_IPAD_SYSTEM") 
try db.run(table.drop()) 

このエラーがスローされます。

database table is locked (code: 6) 

答えて

0

これは最終的に私のために働いていました。広告/書き込み操作:db = Connection()。これは、sqlite.swiftが自動的に接続を閉じることを意図していたので、面倒な解決策ですが、別の機能として接続を定義していたため、この問題が発生しました。私はこれをお勧めしません。各ファイルの開始時に必要なときに接続を定義するのに最適です。

0

は、同期

と単一のスレッドですべてのテーブルに関連するデータを実行しよう
DispatchQueue.global(qos: .background).sync 
      { 
      try db.run(table.drop()) 
      } 
+0

これはほとんど同じことでしたが、私はまだ同じ問題を抱えていました。データベースを空の接続に割り当てることによって、各操作の後に手動でデータベースを閉じる修正が行われました。 db = Connection() –

関連する問題