天天看點

Ruby學習--用ActiveRecord操作資料庫錯誤之連接配接1

控制台資訊:

c:/ruby/lib/ruby/1.8/readbytes.rb:21:in `read': Invalid argument (Errno::EINVAL)

 from c:/ruby/lib/ruby/1.8/readbytes.rb:21:in `readbytes'

 from c:/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/message.rb:32:in `read'

 from c:/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:30:in `initialize'

 from c:/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:29:in `loop'

 from c:/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:29:in `initialize'

 from c:/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/postgres-compat.rb:23:in `new'

 from c:/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/postgres-compat.rb:23:in `initialize'

 from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.1/lib/active_record/connection_adapters/postgresql_adapter.rb:24:in `connect'

  ... 9 levels...

 from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.1/lib/active_record/base.rb:1490:in `initialize_without_callbacks'

 from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.1/lib/active_record/callbacks.rb:225:in `initialize'

 from test.rb:17:in `new'

 from test.rb:17

看完有點莫名其妙,但可以肯定的是:錯誤來自資料庫。找到PostgreSQl的日志:

2007-02-11 23:13:38 FATAL:  database "hello" does not exist

2007-02-11 23:18:48 FATAL:  database "hello" does not exist

原來如此,資料庫名稱不确,用SQLServer用慣了,難免出現這種大小寫錯誤,立馬改過"Hello"

ruby 代碼

  1. require 'rubygems'   
  2. require_gem 'activerecord'  # 請注意使用rubygems時候的聲明方式   
  3. # 連接配接資料庫,按需求填寫各種參數。   
  4. ActiveRecord::Base.establish_connection(   
  5. :adapter => "postgresql",   
  6. :host => "localhost",    
  7. :username => "admin",   
  8. :password => "admin",   
  9. :database => "hello")   
  10. class Resource < ActiveRecord::Base # 開始ORM對應   
  11.   set_table_name 'resource' # 指定資料庫名   
  12. end  
  13. # 插入一條資料   
  14. tab = Resource.new("id" => 8)   
  15. tab.id = 8   
  16. tab.name = 'ActiveRecord'   
  17. tab.save