无法在sqlite3和web2py

时间:2015-09-04 08:33:52

标签: sqlite web2py

我正在尝试在web2py的默认sqlite3数据库中创建一个名为“company”的表。这是我的代码 -

db.define_table('company',
           Field('company_name', notnull=True, unique=True),
           Field('email'),
           Field('phone', notnull=True),
           Field('url3'),
           format = '%(company_name)s'
           )

db.company.email.requires = IS_EMAIL()
db.company.url3.requires = IS_EMPTY_OR(IS_URL())

运行代码后,我遇到了错误 -

<class 'sqlite3.OperationalError'> Cannot add a NOT NULL column with default value NULL

我跟踪了web2py发布的票证。它显示我在这一行中有错误 -

format = '%(company_name)s'

如果有人向我解释这里发生了什么,那对我真的很有帮助吗?以及如何克服这个错误?

1 个答案:

答案 0 :(得分:1)

如果这是一个现有的表,并且您要添加/更新company_name列,则在添加没有默认值的NOT NULL列时,sqlite会抱怨(请参阅here)。

如果表中没有记录,您只需删除表并从头开始创建。如果有记录,您可以先导出现有数据,然后重新创建表,然后将原始数据导入新表。

另请注意,web2py不会迁移notnullunique等字段属性中的更改。