私はstorm 0.14を使用するプログラムの開発を持っているし、それは私の窓に、このエラーを与える問題:なぜWindowsはsqlite3.OperationalErrorを与え、Linuxはそうしないのですか?
sqlite3.OperationError: database table is locked
事があるが、Linuxではそれが正常に動作します。
いくつかのコードで発生するように、ある程度の変更が行われた後で、多くのオブジェクトをコピーするということが起こったという印象を受けました。デバッグモードをオンに
は、Windows上で私にこれを与える:
83 EXECUTE: 'UPDATE regularorder_product SET discount=? WHERE regularorder_product.order_id = ? AND regularorder_product.product_id = ?', (Decimal("25.00"), 789, 274) 84 DONE 85 EXECUTE: 'UPDATE repeated_orders SET nextDate=? WHERE repeated_orders.id = ?', (datetime.date(2009, 3, 31), 189) 86 DONE
システム情報
のWindows
- 勝利:Linux上で
83 EXECUTE: 'UPDATE regularorder_product SET discount=? WHERE regularorder_product.order_id = ? AND regularorder_product.product_id = ?', (Decimal("25.00"), 788, 274) 84 DONE 85 EXECUTE: 'UPDATE repeated_orders SET nextDate=? WHERE repeated_orders.id = ?', (datetime.date(2009, 3, 31), 189) 86 ERROR: database table is locked
dows XP SP 3
- のPython 2.5.4
- NTFSパーティション
Linuxの
- のUbuntu 8.10
- のPython 2.5.2
- のext3パーティション
いくつかのコード
def createRegularOrderCopy(self):
newOrder = RegularOrder()
newOrder.date = self.nextDate
# the exception is thrown on the next line,
# while calling self.products.__iter__
# this happens when this function is invoked the second time
for product in self.products:
newOrder.customer = self.customer
newOrder.products.add(product)
return newOrder
orders = getRepeatedOrders(date)
week = timedelta(days=7)
for order in orders:
newOrder = order.createRegularOrderCopy()
store.add(newOrder)
order.nextDate = date + week
質問
は、WindowsとLinuxの間で異なるsqlite3の/のpythonについては何がありますか?このバグの原因は何か、どうすれば修正できますか?エラーが発生した場所でCOMMIT
を追加する場合
別の観察
、このエラーが代わりにスローされます。答え
からsqlite3.OperationalError: cannot commit transaction - SQL statements in progress
sqlite3のバージョンを確認するには、 'import sqlite3'、 'print sqlite3.sqlite_version'を実行します。元のsqlite3.dllを元に戻すと、比較することができます。 –
私はそれを試してみるよ、ありがとう。 –
Linux:3.5.9、Windows:3.4.4、かなり違います。 –