1

Ruby で Sequel を使用して MySQL データベースにアクセスしようとしています。日付列を含むテーブルにアクセスしようとすると、エラーが表示されます。なしでテーブルにアクセスすると、正常に機能します。なにが問題ですか?

コード例:

require 'rubygems'
require 'sequel'

DB = Sequel.connect(:adapter=>'mysql', :host=>'localhost', :database=>'db', :user=>'user', :password=>'password')

event = DB[:table]

puts event.all

エラー:

/usr/lib/ruby/1.8/date.rb:956:in `new_by_frags': ArgumentError: invalid date (Sequel::InvalidValue)

日付を含まないテーブルにアクセスした場合、エラーは表示されません。これは Debian で実行されています。

4

3 に答える 3

3

注意喚起:

Sequel::MySQL.convert_invalid_date_time = nil

動作しなくなりましたが、DB オブジェクトにオプションを設定して、この同じ問題を修正しました。

DB = Sequel.connect("mysql://localhost/#{DB_NAME}")
DB.convert_invalid_date_time = nil

これが他の誰かに役立つことを願っています!

于 2012-02-20T04:50:23.770 に答える
2

私も同じ問題を抱えていました。これは、MySQL のゼロ日付 '0000-00-00' での Sequel のチョークが原因でした。私が使用した解決策は、設定することでした

Sequel::MySQL.convert_invalid_date_time = nil

(ここにあります: http://groups.google.com/group/sequel-talk/browse_thread/thread/152a4131bd280966 )。

DB を制御する場合、NO_ZERO_DATE SQL モードを使用して MySQL がゼロの日付を格納するのを防ぐこともできます: http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_no_zero_date

于 2010-10-07T10:07:42.180 に答える