Web2py会话表不存在?

时间:2014-07-02 17:05:53

标签: mysql web2py

最近在对我的一些模型进行了一些更新之后,我在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数据库,表格不存在。但我的理解是,这是一个应该为我自动生成的表。谁知道什么给了?它对我的代码来说似乎不是一个明显的问题......

2 个答案:

答案 0 :(得分:1)

听起来有点像web2py创建了会话表(因此在应用程序的/ databases文件夹中创建了关联的迁移元数据文件),但在此之后,您创建/切换到新数据库或删除了表来自数据库。因此,web2py认为该表位于数据库中,并且不会尝试重新创建它。

在应用程序的/ databases文件夹中,查找名称与模式* _web2py_session_runestone.table匹配的文件并将其删除。这将提示web2py在下一个请求时重新创建数据库中的表。

答案 1 :(得分:0)

我有完全相同的错误,在我的情况下,我通过执行下一步来解决它:

  • 重新安装web2py
  • 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应指向您的数据库