我的应用程序中经常出现以下错误。如果我重新启动我的rails应用程序,这个错误将不会出现一段时间。
Rails - 3.1.3
Ruby - 1.9.3
ActiveRecord :: StatementInvalid:PG :: Error:ERROR:null值in 列“id”违反非空约束
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-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1034:in `get_last_result'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1034:in `exec_cache'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:603:in `block in exec_query'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract_adapter.rb:244:in `block in log'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activesupport-3.1.3/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract_adapter.rb:239:in `log'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:601:in `exec_query'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:63:in `exec_insert'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:90:in `insert'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/query_cache.rb:14:in `insert'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/relation.rb:70:in `insert'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/persistence.rb:313:in `create'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/timestamp.rb:51:in `create'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/callbacks.rb:268:in `block in create'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activesupport-3.1.3/lib/active_support/callbacks.rb:390:in `_run_create_callbacks'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activesupport-3.1.3/lib/active_support/callbacks.rb:81:in `run_callbacks'
... 7 levels...
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/validations.rb:50:in `save'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/attribute_methods/dirty.rb:22:in `save'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/transactions.rb:241:in `block (2 levels) in save'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/transactions.rb:208:in `transaction'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/transactions.rb:293:in `with_transaction_returning_status'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/transactions.rb:241:in `block in save'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/transactions.rb:252:in `rollback_active_record_state!'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/activerecord-3.1.3/lib/active_record/transactions.rb:240:in `save'
from (irb):9
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in `start'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in `start'
from /home/user/.rvm/gems/ruby-1.9.3-p194-firstversion@web/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在rails生成的SQL中为nil。
任何人都可以帮助我!我正在努力解决这个错误
先谢谢,
Selva Chezhian
答案 0 :(得分:5)
我有一次同样的问题。这是我的问题。我做了一个
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 :(得分:0)
最好的解决方案是重试插入操作。