[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 メーリングリストの案内