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...

:default_schemaが正しく設定されていても、 Sequelが"sequel.items"ではなくINSERTINTO" items"を実行しようとしていることが問題であると思われます。

誰かが私が間違っていることを知っていますか?前もって感謝します。

編集-これは使用されるコードです:

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

connect メソッドにが欠けているようですpassword(それがドキュメントの例との唯一の違いです)。パスワードはユーザー名だけであることが一般的であるため、パスワードがわからない場合は試してみてください。

また、プロジェクトごとに異なる postgresql ユーザーを使用することもお勧めします。これにより、ユーザーの命名 (プロジェクト名) が直感的になります。これにより、名前が衝突する可能性が回避されます。

とにかく、これが機能するかどうかを確認してください:

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