我正在尝试在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'
如果有人向我解释这里发生了什么,那对我真的很有帮助吗?以及如何克服这个错误?
答案 0 :(得分:1)
如果这是一个现有的表,并且您要添加/更新company_name
列,则在添加没有默认值的NOT NULL列时,sqlite会抱怨(请参阅here)。
如果表中没有记录,您只需删除表并从头开始创建。如果有记录,您可以先导出现有数据,然后重新创建表,然后将原始数据导入新表。
另请注意,web2py不会迁移notnull
和unique
等字段属性中的更改。