rails:905
From: Makoto Satoh <satoh.makoto@g...>
Date: Thu, 26 Jan 2006 17:55:35 +0900
Subject: [rails:905] ArgumentError: time out of range: SELECT * FROM
佐藤と申します。 Linux上のRails 1.0で、Ruby-ODBC/iodbc/FreeTDS経由でSQLServerへつないでいます。 sqlserverアダプタでmode: odbcとしています。 普通にfind(:all)したのですが、下記のようなエラーが出ました。 ArgumentError: time out of range: SELECT * FROM ....... /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract_adapter.rb:88:in `log' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/sqlserver_adapter.rb:467:in `select' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/sqlserver_adapter.rb:227:in `select_all' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:431:in `find_by_sql' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:395:in `find' "out of range" time rubyとGoogleしてみましたが、Epochより前のTimeオブジェクトは 作れない、などというのがありました。 abstract_adapter.rbのlogを見ましたが、このメソッドの中で例外が投げられている ようですが、logメソッドの中でTimeに関係しそうなのはBenchmarkモジュールくらいかと 思うのですが、まさかBenchmarkモジュールがそんなバグを含んでいるとは思いにくく。 ログレベルを:debugにして実行したところ、実際にモデルのオブジェクトをロード するところ(ログメッセージで言うと、[モデルクラス名] Load (0.000000) Argument Error: time out of range: SELECT * FROM ...と表示されています)で例外が起きて いるようです。 これはやはりBenchmarkモジュールではなく、ロードしようとしているデータベースの 行にEpochより前の時刻を表すTimeオブジェクトを作ろうとしたための例外と考える ほうが良いでしょうか? これは、そういうデータを含むデータベースが悪いのか、sqlserver_adapter.rbの 問題か、はたまたBenchmarkモジュールに何かあるのか、どこをどういう風に見て 行けば良いか、アドバイスいただけましたらと思います。 よろしくお願いいたします。 -- 佐藤
-> @ 905 2006-01-26 09:55 [satoh.makoto@g... ] ArgumentError: time out of range: SELECT * FROM 906 2006-01-27 12:43 ┗[moriq@m... ]