2013-04-17 71 views
6

我在我的應用程序中經常遇到以下錯誤。如果我重新啓動我的Rails應用程序,此錯誤將不會顯示一段時間。ActiveRecord :: StatementInvalid:PG ::錯誤:錯誤:列「id」中的空值違反非空約束

導軌 - 3.1.3

紅寶石 - 1.9.3

ActiveRecord::StatementInvalid: PG::Error: ERROR: null value in column "id" violates not-null constraint

Directory.create(:name=>"name",:alias_name=>"name",:site_id=>2,:type=>"Directory") 

(0.3ms) BEGIN 
    SQL (0.8ms) INSERT INTO "databases" ("alias_name", "created_at", "created_by", "id", "name", "site_id", "type", "updated_at", "updated_by") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) [["alias_name", "name"], ["created_at", Wed, 17 Apr 2013 16:46:25 IST +05:30], ["created_by", nil], ["id", nil], ["name", "name"], ["site_id", 2], ["type", "Directory"], ["updated_at", Wed, 17 Apr 2013 16:46:25 IST +05:30], ["updated_by", nil]] 
PG::Error: ERROR: null value in column "id" violates not-null constraint 
: INSERT INTO "databases" ("alias_name", "created_at", "created_by", "id", "name", "site_id", "type", "updated_at", "updated_by") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) 
    (0.2ms) ROLLBACK 
ActiveRecord::StatementInvalid: PG::Error: ERROR: null value in column "id" violates not-null constraint 
: INSERT INTO "databases" ("alias_name", "created_at", "created_by", "id", "name", "site_id", "type", "updated_at", "updated_by") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1034:in `get_last_result' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1034:in `exec_cache' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:603:in `block in exec_query' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract_adapter.rb:244:in `block in log' 
    from /home/user/.rvm/gems/[email protected]/gems/activesupport-3.1.3/lib/active_support/notifications/instrumenter.rb:21:in `instrument' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract_adapter.rb:239:in `log' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:601:in `exec_query' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:63:in `exec_insert' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:90:in `insert' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/query_cache.rb:14:in `insert' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/relation.rb:70:in `insert' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/persistence.rb:313:in `create' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/timestamp.rb:51:in `create' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/callbacks.rb:268:in `block in create' 
    from /home/user/.rvm/gems/[email protected]/gems/activesupport-3.1.3/lib/active_support/callbacks.rb:390:in `_run_create_callbacks' 
    from /home/user/.rvm/gems/[email protected]/gems/activesupport-3.1.3/lib/active_support/callbacks.rb:81:in `run_callbacks' 
... 7 levels... 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/validations.rb:50:in `save' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/attribute_methods/dirty.rb:22:in `save' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/transactions.rb:241:in `block (2 levels) in save' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/transactions.rb:208:in `transaction' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/transactions.rb:293:in `with_transaction_returning_status' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/transactions.rb:241:in `block in save' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/transactions.rb:252:in `rollback_active_record_state!' 
    from /home/user/.rvm/gems/[email protected]/gems/activerecord-3.1.3/lib/active_record/transactions.rb:240:in `save' 
    from (irb):9 
    from /home/user/.rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in `start' 
    from /home/user/.rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in `start' 
    from /home/user/.rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands.rb:40:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>'1.9.3p194 :010 > 

我不知道爲什麼ID會作爲軌道零生成的SQL。

任何人都可以幫助我!我提前很多掙扎與此錯誤

感謝,

塞爾瓦Chezhian

+0

模式中id列的設置是什麼?自動遞增? NULL,NOT NULL?最有可能的問題是如何設置ID列 – Slinky

+0

ID列是不是默認的nextval('directories_id_seq':: regclass) – Chezhian

回答

6

我有同樣的問題一次。這是我的問題。我做了一個

rake db:schema:dump 
rake db:schema:load 

,並表了問題如下:

create_table "campaign_line_items_backup", :id => false, :force => true do |t| 
    t.integer "id" 
    t.integer "campaign_id" 
    t.integer "size_id" 
    t.text  "name" 

應該

create_table "campaign_line_items_backup", :force => true do |t| 
    t.integer "campaign_id" 
    t.integer "size_id" 
    t.text  "name" 

我不知道你的問題,這是我固定我的方式。

+1

大約2年後,你已經保存了我的一天。 – Pyro2927

相關問題