切换到postgres适配器时,续集默认示例失败

时间:2012-11-16 15:55:44

标签: ruby postgresql sequel

我正试图从http://sequel.rubyforge.org/运行续集示例。在sqlite上一切正常,但是当我切换到postgres时失败了。

这是连接代码:

DB = Sequel.connect(:adapter=>'postgres', :host=>'localhost', :database=>'testing', :user=>'postgres', :default_schema=>'sequel')

这是我得到的错误:

postgres.rb:145:in `async_exec': PG::Error: ERROR:  relation "items" does not exist (Sequel::DatabaseError) 
LINE 1: INSERT INTO "items" ("price", "name") VALUES (12.45377636338...

我怀疑问题是Sequel尝试执行INSERT INTO “items”而不是“sequel.items”,即使:default_schema已正确设置。< / p>

任何人都知道我做错了什么? 提前谢谢。

编辑 - 这是使用的代码:

require "rubygems"
require "sequel"

# connect to an in-memory database
#DB = Sequel.sqlite
DB = Sequel.connect(:adapter=>'postgres', :host=>'localhost', :database=>'testing', :user=>'postgres', :default_schema=>'sequel')

# create an items table
DB.create_table :items do
  primary_key :id
  String :name
  Float :price
end

# create a dataset from the items table
items = DB[:items]

# populate the table
items.insert(:name => 'abc', :price => rand * 100)
items.insert(:name => 'def', :price => rand * 100)
items.insert(:name => 'ghi', :price => rand * 100)

# print out the number of records
puts "Item count: #{items.count}"

1 个答案:

答案 0 :(得分:1)

看起来你错过了connect方法中的password(这是与文档示例的唯一区别)。密码通常只是用户名,所以如果您不确定密码是什么,请尝试。

还建议在每个项目中使用不同的postgresql用户,这样也可以直观地命名用户(项目名称。)这可以避免可能发生冲突的名称。

无论如何,看看是否有效:

DB = Sequel.postgres 'testing', host: 'localhost', default_schema: 'sequel', 
       user: 'postgres', password: 'postgres'