[pgsql-jp: 40070] Re: rubyから利用するとエラーが出るときがあります。
"河野 裕一(KAWANO
"河野 裕一(KAWANO
2009年 11月 25日 (水) 15:28:43 JST
こんにちは。河野と申します。
#見当外れだと思います
気になったのですが、
> id serial NOT NULL PRIMARY KEY,
> key integer
で定義したテーブルの主キーにランダムの int を格納していると読み取りまし
た。
ランダムなんでキー重複しちゃうことありませんか?
> On Wed, 25 Nov 2009 14:42:24 +0900
> Subject: [pgsql-jp: 40068] rubyから利用するとエラーが出るときがあります。
> Nobuyuki Inaba <nobuyuki.inaba @ gmail.com> wrote:
> 稲葉と申します。
> ここに質問してよいか悩みながら、困ったことが起きたのでメールさせていただきます。
>
> OSはubuntu9.10を使っています。前のバージョンから、最近、9.10にしました。
> そのせいで、使っていたデータベースはPostgreSQLが8.3から8.4になりました。
> データベースを利用するのにrubyを利用しています。
> 同じ質問をRubyの方にも出しています。
>
> 話をかんたんにするため、例を用意しました。
> ---------------------------------------------------
> #!/usr/bin/ruby
> require 'dbi'
>
> begin
> conn = DBI.connect('DBI:PG:testdb:localhost', 'test01', '123456789')
> sql = "
> CREATE TABLE t01
> (
> id serial NOT NULL PRIMARY KEY,
> key integer
> );"
> sth = conn.prepare(sql)
> sth.execute
>
> for i in 0 .. 10000 # ここが 10000 ではなく、100ぐらいだとエラーはでない。
> num = rand(1000)
> sql = "INSERT INTO t01(key) values(#{num}); "
> sth = conn.prepare(sql)
> sth.execute
> puts i
> end
>
> end
> ------------------------------------------------------------------
>
> というプログラムを実行しますと、
> 0
> 1
> ....
> 890
> 891
> /usr/lib/ruby/1.8/dbd/pg/statement.rb:62:in `execute': ERROR:
> 準備された文"ruby-dbi:Pg:70118378567060"はすでに存在します (DBI::ProgrammingError)
> from /usr/lib/ruby/1.8/dbi/handles/statement.rb:116:in `execute'
> from ich024-2.rb:19
> from ich024-2.rb:15:in `each'
> from ich024-2.rb:15
>
> と言うようにエラーが表示されます。
> 以前のPostgreSQL8.3では出なかったと思いますが、このエラーメッセージはどうすればよいかわかりません。
> また、
> for i in 0 .. 10000
> の部分を
> for i in 0 .. 100
> ぐらいだとエラーは出ません。
> なにかまずいことしているとか、ごぞんじないでしょうか?
> どこをうたがうとよいか正直分かりません。
>
> なにか、どこが問題なのか分かりましたら教えていただけないでしょうか?
> 困ってます。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
【河野 裕一 [Kawano Yuichi]】
大分シーイーシー株式会社 システム部
〒873-0008 大分県杵築市大字熊野大平21-1
TEL : 0978-64-1111 (代表)
971-258 (CECグループ内)
FAX : 0978-62-1441
E-mail: y_kawano @ cec-ltd.co.jp
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
pgsql-jp メーリングリストの案内