当我尝试向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相关。请指教。
答案 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将在第一次请求时创建表(之后,您可以禁用迁移,直到需要进行另一次更改)。