2011-09-06 29 views
2

我建立了一個非常簡單的關係使用的DataMapper:DataMapper - 簡單關聯,DataObjects :: SyntaxError - 任何想法?

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) 

任何想法? :)

+0

你知道哪一列導致了這個錯誤嗎?有人試圖向表中添加新列,該列爲「NOT NULL」,並且表中已經有行。 –

+0

對我來說,它是外鍵DataObject:SyntaxError:不能添加一個默認值爲NULL的NOT NULL列(代碼:1,sql狀態:,查詢:ALTER TABLE「trade_orders」ADD COLUMN「coin_exchange_id」INTEGER NOT NULL .. 。。@ sannankhalid的答案適用於我。 – RobinGower

回答

4

您需要在保存B類對象時給出a_id(這是一個外鍵)。如果你想使這個NULL列,然後添加belongs_to:a,:required => false,現在你的類B看起來像。

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

然後放下數據庫並重建它。