Ruby on rails DataMapper-简单关联,DataObjects::SyntaxError-有什么想法吗?

Ruby on rails DataMapper-简单关联,DataObjects::SyntaxError-有什么想法吗?,ruby-on-rails,ruby,sinatra,datamapper,Ruby On Rails,Ruby,Sinatra,Datamapper,我使用DataMapper建立了一个非常简单的关系: class A include DataMapper::Resource property :id, Serial has n, :b end class B include DataMapper::Resource property :id, Serial belongs_to :a end 我得到这个错误: dm-do-adapter.rb:70:in `execute_non_query': Cannot a

我使用DataMapper建立了一个非常简单的关系:

class A
  include DataMapper::Resource
  property :id, Serial
  has n, :b
end

class B
  include DataMapper::Resource
  property :id, Serial
  belongs_to :a
end
我得到这个错误:

dm-do-adapter.rb:70:in `execute_non_query': Cannot add a 
    NOT NULL column with default value NULL (DataObjects::SyntaxError)
有什么想法吗?:)

保存Class B对象时,需要提供a_id(外键)。如果您想使这个列为空,那么add beliens_to:a,:required=>false,现在您的类B如下所示

class B
  include DataMapper::Resource
  property :id, Serial
  belongs_to :a, :required => false
end

然后删除数据库并重建它。

您知道是哪列导致了该错误吗?有人试图向表中添加一个新列,该列为
NOT NULL
,并且该表已经有行。对我来说,它是外键
DataObjects::SyntaxError:无法添加默认值为NULL的NOT NULL列(代码:1,sql状态:,查询:ALTER table“trade\u orders”添加列“coin\u exchange\u id”整数不为空…
@sannankhalid的答案对我很有用。