我正试图从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}"
答案 0 :(得分:1)
看起来你错过了connect方法中的password
(这是与文档示例的唯一区别)。密码通常只是用户名,所以如果您不确定密码是什么,请尝试。
还建议在每个项目中使用不同的postgresql用户,这样也可以直观地命名用户(项目名称。)这可以避免可能发生冲突的名称。
无论如何,看看是否有效:
DB = Sequel.postgres 'testing', host: 'localhost', default_schema: 'sequel',
user: 'postgres', password: 'postgres'