尝试从代码更新时,web2py 数据库始终处于锁定状态

web2py database always locked when trying to update from code

尝试简单地更新数据库中的现有行(运行 在 web2py 上), 但总是出现数据库锁定错误..

错误信息:

<class 'sqlite3.OperationalError'> database is locked

我的设置

软件

到目前为止我尝试了什么


错误日志:http://pastebin.com/2WMWypt6


当前解决方法: - 创建新应用程序,完全相同的代码似乎在那里工作


解决方案是: @GauravVichare - 从控制器中删除此行(它已在 db.py 中定义)

db = DAL('sqlite://storage.sqlite',pool_size=10,auto_import=True)

尝试使用 myRecord 而不是 Record,因为它可能是保留字。
我知道 User 在 web2py 中给人们带来了问题。我只是倾向于远离非常通用的别名。

否则,数据库中当前是否有任何内容?如果它是空的,你会收到错误消息。
可能更好:

myRecord = record = db(db.mytest).select().first()

if myRecord:
  myRecord.update_record(name="asdfg")
else:
  [insert statement here]

我的建议是

1.First 全部在您进行一些更改时保存代码。

2.Aftr 保存你的新代码尝试重新加载 web2py.exe 然后 运行 web2py 这样你就不会得到 Databaselocked 错误。

3.Dont 以前在 Sqlite 数据库中创建过表。

4.once 你启动 运行ning web2py 并启动服务器,当你在表单中输入数据时,它会自动在 sqlite 数据库中创建表格。

检查您的机器上是否没有其他连接(到 sqlite 数据库)打开,如果 web2py shell 打开,请关闭它。

检查DAL是否只定义一次。仅在models/db.py中定义DAL,无需在controller中重新定义。

模型中定义的每个变量在控制器中都是可见的。

您必须在 models/db.py 中定义了 DAL,并且您正在控制器中再次定义,因此您为 SQLite db 打开了两个连接。这就是您收到错误“database is locked”的原因。