gpt4 book ai didi

python - 为什么 windows 会给出 sqlite3.OperationalError 而 linux 不会?

转载 作者:可可西里 更新时间:2023-11-01 09:18:42 24 4
gpt4 key购买 nike

问题

我有一个使用 storm 0.14 的程序它在 Windows 上给了我这个错误:

sqlite3.OperationError: database table is locked

The thing is, under linux it works correctly.

I've got the impression that it happens only after a certain amount of changes have been done, as it happens in some code, that copies a lot of objects.

Turning on the debug mode gives me this on windows:

83 EXECUTE: 'UPDATE regularorder_product SET discount=? WHERE regularorder_product.order_id = ? AND regularorder_product.product_id = ?', (Decimal("25.00"), 788, 274)84 DONE85 EXECUTE: 'UPDATE repeated_orders SET nextDate=? WHERE repeated_orders.id = ?', (datetime.date(2009, 3, 31), 189)86 ERROR: database table is locked

On linux:

83 EXECUTE: 'UPDATE regularorder_product SET discount=? WHERE regularorder_product.order_id = ? AND regularorder_product.product_id = ?', (Decimal("25.00"), 789, 274)84 DONE85 EXECUTE: 'UPDATE repeated_orders SET nextDate=? WHERE repeated_orders.id = ?', (datetime.date(2009, 3, 31), 189)86 DONE

System info

Windows

  • Windows XP SP 3
  • Python 2.5.4
  • NTFS partition

Linux

  • Ubuntu 8.10
  • Python 2.5.2
  • ext3 partition

Some code

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

答案的答案

我没有使用多线程/进程,因此并发应该不是问题,而且我只有一个 Store 对象。

最佳答案

“数据库表已锁定”错误通常是 SQLite 中的一般/默认错误,因此缩小问题范围并不明显。

您能执行任何 SQL 查询吗?我会从那里开始,让一些基本的 SELECT 语句起作用。这可能只是一个权限问题。

关于python - 为什么 windows 会给出 sqlite3.OperationalError 而 linux 不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/679162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com