我正尝试在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’>无法添加缺省值为NULL的非空列
它来自于这样一句话:
format = '%(company_name)s'
如何解决这个错误?
2条答案
按热度按时间3b6akqbq1#
如果这是一个现有的表,并且您正在添加/更新
company_name
列,则在添加一个没有缺省值的非空列时,SQLite将会出现错误(请参见here)。如果表中没有记录,您只需删除该表并从头开始创建它。如果有记录,可以先导出现有数据,然后重新创建表,然后将原始数据导入到新表中。
另外,请注意,web2py不迁移
notnull
和unique
等字段属性中的更改。ergxz8rk2#
我添加了一行只使用数据类型字符串的行:
address = db.Column(db.String(100))
。