2013-04-17 3 views
6

Ricevo frequentemente il seguente errore nella mia applicazione. Se riavvio l'applicazione rails questo errore non verrà visualizzato per qualche tempo.ActiveRecord :: StatementInvalid: PG :: Errore: ERRORE: valore null nella colonna "id" viola il vincolo not-null

Rails - 3.1.3

Rubino - 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/ruby-1.9.3-p194-firstvers[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 > 

Non so il motivo per cui id sta andando come nullo nelle rotaie generato SQL.

Qualcuno può aiutarmi per favore !!! Sto lottando molto con questo errore

Grazie in anticipo,

Selva Chezhian

+0

Quali sono le impostazioni per la colonna id nello schema? Incremento automatico? NULL, NON NULL? Molto probabilmente un problema con il modo in cui la colonna id è stata impostata nella colonna id – Slinky

+0

è come non null default nextval ('directories_id_seq' :: regclass) – Chezhian

risposta

6

Ho lo stesso problema una volta. Ecco il mio problema Ho fatto un

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

e la tavola ottenuto problema, come di seguito:

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" 

dovrebbe essere

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

Non sono sicuro circa il tuo problema, Questo è il modo in cui ho fissato il mio.

+1

Quasi 2 anni dopo e hai salvato la mia giornata. – Pyro2927