[ruby-list:46592] Re: ruby1.9 でpostgresql8.4を利用するときについて。
From:
Nobuyuki Inaba <nobuyuki.inaba@...>
Date:
2009-12-02 00:03:17 UTC
List:
ruby-list #46592
アドバイスありがとうございます。
やってみました。
こんな感じでエラーが表示されました。
なにか解決のヒントがありますでしょうか?
-----------------------------------------------------------------------------
conn = DBI.connect('DBI:Pg:testdb:localhost', 'test01', '123456789') とした場合
$ ruby1.9 -d test.rb
Exception `LoadError' at <internal:gem_prelude>:99 - Could not find
RubyGem deprecated (>= 0)
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old initialize
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old initialize
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old initialize
Exception `LoadError' at <internal:gem_prelude>:99 - Could not find
RubyGem deprecated (>= 0)
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old is_nullable?
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old can_be_null?
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old is_indexed?
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old is_primary?
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old is_unique
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old size
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old size=
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old length
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old length=
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old decimal_digits
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old decimal_digits=
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old default_value
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old default_value=
/usr/lib/ruby/1.9.0/dbi/handles.rb:12: warning: optional boolean
argument is obsoleted
Exception `LoadError' at <internal:gem_prelude>:99 - Could not find
RubyGem pg (>= 0)
Exception `PGError' at /usr/lib/ruby/1.9.0/dbd/pg/database.rb:51 -
unterminated quoted string in connection info string
Exception `DBI::OperationalError' at
/usr/lib/ruby/1.9.0/dbd/pg/database.rb:82 - unterminated quoted string
in connection info string
/usr/lib/ruby/1.9.0/dbd/pg/database.rb:82:in `rescue in initialize':
unterminated quoted string in connection info string
(DBI::OperationalError)
from /usr/lib/ruby/1.9.0/dbd/pg/database.rb:41:in `initialize'
from /usr/lib/ruby/1.9.0/dbd/Pg.rb:157:in `new'
from /usr/lib/ruby/1.9.0/dbd/Pg.rb:157:in `connect'
from /usr/lib/ruby/1.9.0/dbi/handles/driver.rb:33:in `connect'
from /usr/lib/ruby/1.9.0/dbi.rb:142:in `connect'
from test.rb:7:in `<main>'
-----------------------------------------------------------------------------
conn = DBI.connect('DBI:PG:testdb:localhost', 'test01', '123456789')
と最初のとおり実行した場合。
$ ruby1.9 -d test.rb
Exception `LoadError' at <internal:gem_prelude>:99 - Could not find
RubyGem deprecated (>= 0)
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old initialize
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old initialize
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old initialize
Exception `LoadError' at <internal:gem_prelude>:99 - Could not find
RubyGem deprecated (>= 0)
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old is_nullable?
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old can_be_null?
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old is_indexed?
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old is_primary?
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old is_unique
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old size
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old size=
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old length
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old length=
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old decimal_digits
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old decimal_digits=
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old default_value
/usr/lib/ruby/1.9.0/deprecated.rb:178: warning: method redefined;
discarding old default_value=
/usr/lib/ruby/1.9.0/dbi/handles.rb:12: warning: optional boolean
argument is obsoleted
Exception `LoadError' at /usr/lib/ruby/1.9.0/dbi.rb:245 - no such file
to load -- dbd/PG
Exception `LoadError' at <internal:gem_prelude>:99 - Could not find
RubyGem pg (>= 0)
Exception `NameError' at /usr/lib/ruby/1.9.0/dbi.rb:274 -
uninitialized constant DBI::DBD::PG
Exception `DBI::InterfaceError' at /usr/lib/ruby/1.9.0/dbi.rb:294 -
Unable to load driver 'PG' (underlying error: uninitialized constant
DBI::DBD::PG)
/usr/lib/ruby/1.9.0/dbi.rb:294:in `block in load_driver': Unable to
load driver 'PG' (underlying error: uninitialized constant
DBI::DBD::PG) (DBI::InterfaceError)
from /usr/lib/ruby/1.9.0/monitor.rb:190:in `mon_synchronize'
from /usr/lib/ruby/1.9.0/dbi.rb:236:in `load_driver'
from /usr/lib/ruby/1.9.0/dbi.rb:154:in `_get_full_driver'
from /usr/lib/ruby/1.9.0/dbi.rb:139:in `connect'
from test.rb:7:in `<main>'
2009年12月1日22:03 akira yamada / やまだあきら <akira@arika.org>:
> (2009年11月27日 19:12), Nobuyuki Inaba wrote:
>> begin
>> conn = DBI.connect('DBI:PG:testdb:localhost', 'test01', '123456789')
>
> DBI:Pg:... にすると通ったりしますか? もしそうなら
> dbi.rbの280行目あたり:
>
> found = DBI::DBD.constants.find { |e| e.downcase == dc }
>
> ここでdcは"pg"(driver_name.downcase)なのですが
> 1.9.0〜ではconstantsがsymbolを返すので1.8とは動作が違ってきます。
> そのあたりではないでしょうか。
>
>> $ ruby1.9 test.rb
>> /usr/lib/ruby/1.9.0/dbi.rb:294:in `block in load_driver': Unable to
>> load driver 'PG' (underlying error: uninitialized constant
>> DBI::DBD::PG) (DBI::InterfaceError)
>> from /usr/lib/ruby/1.9.0/monitor.rb:190:in `mon_synchronize'
>> from /usr/lib/ruby/1.9.0/dbi.rb:236:in `load_driver'
>> from /usr/lib/ruby/1.9.0/dbi.rb:154:in `_get_full_driver'
>> from /usr/lib/ruby/1.9.0/dbi.rb:139:in `connect'
>> from test.rb:6:in `<main>'
>
> ruby1.9 -d test.rbのように-dを付けて実行すると
> もう少し何かわかるかも。
>
> --
> やまだ
>
>