【发布时间】:2014-12-26 06:48:26
【问题描述】:
我正在以推荐的方式运行define_tables:
db = DAL('postgres://user:XXXX@localhost:5432/mydb', migrate_enabled=False, auto_import=False, lazy_tables=True)
db.define_table('auth_user',
Field('email', unique=True),
Field('password', length=512, type='password', readable=False, label='Password'),
...)
这会在没有错误的情况下执行,但不会在数据库中创建表。每当我尝试插入新用户时:
relation "auth_user" does not exist
会发生什么?一旦创建了表(例如手动),应用程序就可以正常工作。我正在使用 postgres 后端。无论我给lazy_tables 赋予什么价值,都会发生这种情况
编辑
这是完整的测试脚本:
from gluon import DAL
from gluon import Field
db = DAL('postgres://user:pass@localhost:5432/mydb', migrate_enabled=False)
db.define_table(
'auth_user',
Field('email', type='string', unique=True),
Field('password', type='password'),
Field('registration_key', type='string', length=512, writable=False, readable=False, default=''),
Field('reset_password_key', type='string', length=512, writable=False, readable=False, default=''),
Field('registration_id', type='string', length=512, writable=False, readable=False, default=''),
)
db.commit()
print db.tables
db.auth_user.insert(email='g@b.c')
我得到以下输出:
['auth_user']
Traceback (most recent call last):
File "xxx.py", line 19, in <module>
db.auth_user.insert(email='g@b.c')
File "/tmp/web2py/gluon/dal.py", line 9293, in insert
ret = self._db._adapter.insert(self, self._listify(fields))
File "/tmp/web2py/gluon/dal.py", line 1361, in insert
raise e
psycopg2.ProgrammingError: relation "auth_user" does not exist
LINE 1: INSERT INTO auth_user(reset_password_key,registration_id,reg...
该表以某种方式“创建”(在内存中?),但它实际上不在 postgres 数据库中。这是什么意思?
【问题讨论】: