Web2py错误“<class'sqlite3.operationalerror'=”“>没有这样的表:应用程序

时间:2017-09-18 09:44:53

标签: sqlite web2py

当我尝试向Web2py数据库添加新记录时,我收到此错误。我已经从不同的机器上移动了存储库,但我的所有文件都是相同的。

我以前的数据库DAL连接参数如下:

from gluon.contrib.appconfig import AppConfig
myconf = AppConfig(reload=True)
if not request.env.web2py_runtime_gae:
     db = DAL(myconf.get('db.'+myconf.get('db.mode')+'_uri'),
              pool_size=myconf.get('db.pool_size'),
              migrate=myconf.get('db.migrate'),
              migrate_enabled=myconf.get('db.migrate_enabled'),
              #fake_migrate_all=myconf.get('db.fake_migrate_all'),
              fake_migrate_all=True,
              check_reserved=['all'])

else:
    db = DAL('google:datastore+ndb')
    session.connect(request, response, db=db)

它给了我user_auth未找到的错误,所以我按照官方文档将其更改为:

from gluon.contrib.appconfig import AppConfig
myconf = AppConfig(reload=True)
if not request.env.web2py_runtime_gae:
    db = DAL('sqlite://storage.sqlite', pool_size=1, check_reserved=['all'], migrate=False, fake_migrate_all=True)
else:
    db = DAL('google:datastore+ndb')

它显示/ database和“Database_Administration”控制台中的所有表我尝试添加新记录,我收到以下错误。

Web2py Error" <class 'sqlite3.OperationalError'> no such table: application

我的应用程序中没有名为“application”的表,因此必须与app相关。请指教。

2 个答案:

答案 0 :(得分:3)

转到&#34; applications / yourappname / databases&#34;中的数据库文件夹。删除所有表,然后重新创建表。你必须从某个地方复制它并且无法加载所有表。设置migrate = True和fake_migrate_all = false。然后重新运行服务器并转到web2py服务器面板中的应用程序。选择&#34;编辑&#34;并转到&#34;数据库管理&#34; &#34;模特&#34;在管理面板上。您将在自己的计算机上重新创建所有表。如果您不是从其他来源复制的情况......仍然通过删除所有表格来执行以下操作。你肯定会把它运行起来。

答案 1 :(得分:0)

您已经创建了一个全新的数据库,但是通过设置fake_migrate_all=True,您已经使web2py认为所有表都已创建,即使它们从未创建过。相反,您应该先离开migrate=True(默认值),而不要设置fake_migrate_all。在这种情况下,web2py将在第一次请求时创建表(之后,您可以禁用迁移,直到需要进行另一次更改)。