最近在对我的一些模型进行了一些更新之后,我在web2py中遇到了这个错误。
Traceback (most recent call last):
File "/Users/acbart/web2py/gluon/main.py", line 457, in wsgibase
session._try_store_in_db(request, response)
File "/Users/acbart/web2py/gluon/globals.py", line 1116, in _try_store_in_db
record_id = table.insert(**dd)
File "/Users/acbart/web2py/gluon/dal.py", line 9114, in insert
ret = self._db._adapter.insert(self, self._listify(fields))
File "/Users/acbart/web2py/gluon/dal.py", line 1360, in insert
raise e
ProgrammingError: (1146, u"Table 'runestone_dev.web2py_session_runestone' doesn't exist")
我的web2py应用程序名为runestone
,数据库名为runestone_dev
。我检查了MySQL数据库,表格不存在。但我的理解是,这是一个应该为我自动生成的表。谁知道什么给了?它对我的代码来说似乎不是一个明显的问题......
答案 0 :(得分:1)
听起来有点像web2py创建了会话表(因此在应用程序的/ databases文件夹中创建了关联的迁移元数据文件),但在此之后,您创建/切换到新数据库或删除了表来自数据库。因此,web2py认为该表位于数据库中,并且不会尝试重新创建它。
在应用程序的/ databases文件夹中,查找名称与模式* _web2py_session_runestone.table匹配的文件并将其删除。这将提示web2py在下一个请求时重新创建数据库中的表。
答案 1 :(得分:0)
我有完全相同的错误,在我的情况下,我通过执行下一步来解决它:
runestone
项目克隆到应用程序文件夹中。web2py/applications/runestone/models/1.py
创建settings.database_uri = <your_connection_string>
。如果您使用Postgres,连接字符串应该看起来像postgres://username:passwd@localhost/dbname
。web2py/applications/runestone/books/
pavement.py
文件:'dburl': 'postgresql://bmiller@localhost/runestone',
。 dburl
应指向您的数据库