Sinatra `执行非查询';:无法添加默认值为NULL的非NULL列(DataObjects::SyntaxError)
跟???我标记了引发错误“执行非查询”的关系:无法添加默认值为NULL的非NULL列(DataObjects::SyntaxError) "Sinatra `执行非查询';:无法添加默认值为NULL的非NULL列(DataObjects::SyntaxError),sinatra,datamapper,relationships,Sinatra,Datamapper,Relationships,跟???我标记了引发错误“执行非查询”的关系:无法添加默认值为NULL的非NULL列(DataObjects::SyntaxError) " 如何在datamapper中定义2与一个模型的多个关系?默认情况下,需要您的所属关系。我假设您的数据库中已经有记录条目。自动升级正在尝试为关联添加新字段,默认情况下,它将该列标记为非空。但是,对于所有现有记录,该值将为空 要解决此问题,请执行以下操作之一: 执行自动迁移而不是自动升级。这会破坏你的数据,但是 将允许您添加关系列,而不会阻塞它 空值 使用:
如何在datamapper中定义2与一个模型的多个关系?默认情况下,需要您的
所属关系。我假设您的数据库中已经有记录
条目。自动升级
正在尝试为关联添加新字段,默认情况下,它将该列标记为非空
。但是,对于所有现有记录,该值将为空
要解决此问题,请执行以下操作之一:
- 执行
自动迁移
而不是自动升级
。这会破坏你的数据,但是
将允许您添加关系列,而不会阻塞它
空值
- 使用
:required=>false将关联设置为可选。这将允许在数据库中使用空值。接下来,进入并将这些字段设置为适当的值。最后,将数据库表列修改为notnull
这太棒了!非常感谢。我在让datamapper添加我的关系时遇到问题,并发现了此问题。
class User
include DataMapper::Resource
property :id, Serial
property :name, String
property :email, String
has n, :records
end
class Project
include DataMapper::Resource
property :id, Serial
property :name, String
has n, :records ?????
end
#
class Record
# SPEND_REGEX = /^[0-9]{1}:[0-5]{1}[0-9]{1}$/
include DataMapper::Resource
property :id, Serial
property :reporting_type, String
property :spend_time, String
belongs_to :user
belongs_to :project ????
end
DataMapper.auto_upgrade!