0

我正在尝试从http://sequel.rubyforge.org/运行 Sequel 示例。在 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 设置正确。

有人知道我在做什么错吗?提前致谢。

编辑 - 这是使用的代码:

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}"
4

1 回答 1

1

看起来您缺少passwordconnect 方法中的 (这是与文档示例的唯一区别)。密码通常只是用户名,因此如果您不确定密码是什么,请尝试使用。

还建议对每个项目使用不同的 postgresql 用户,这也使用户命名直观(项目名称)。避免潜在的名称冲突。

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

DB = Sequel.postgres 'testing', host: 'localhost', default_schema: 'sequel', 
       user: 'postgres', password: 'postgres'
于 2012-11-17T09:26:06.357 回答