Domanda

Sto cercando di usare Sequel per accedere a un database MySQL in Ruby. Quando provo si accede a un tavolo che coinvolge una colonna di data, mi sono presentato con un errore. Quando accedo un tavolo senza, funziona bene. Cosa c'è di sbagliato?

Codice

Esempio:

require 'rubygems'
require 'sequel'

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

event = DB[:table]

puts event.all

Errore:

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

L'errore non viene visualizzato quando una tabella che non dispongono di una data si accede. Questo è in esecuzione su Debian.

È stato utile?

Soluzione

Ho avuto lo stesso problema. E 'stata causata da soffocamento sul Sequel di MySQL data zero ‘0000-00-00’. La soluzione che ho usato è stato quello di impostare

Sequel::MySQL.convert_invalid_date_time = nil

(che si trova qui: http://groups.google.com/ gruppo / sequel-talk / browse_thread / thread / 152a4131bd280966 ).

Se si controlla il DB, si potrebbe anche evitare la memorizzazione di MySQL a zero date utilizzando la modalità NO_ZERO_DATE SQL: http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_no_zero_date .

Altri suggerimenti

Heads up:

Sequel::MySQL.convert_invalid_date_time = nil

non funziona più, ma ho appena risolto questo stesso problema impostando l'opzione sul mio oggetto DB:

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

Spero che questo aiuti qualcun altro!

La soluzione finale ha coinvolto il passaggio di utilizzare la data_objects rubino gemma. Ciò ha evitato i problemi usando il driver nativo C MySQL.

Il codice è regolato come segue:

require 'rubygems'
require 'sequel'

# connect to the db
DB = Sequel.connect('do:mysql://user:pass@localhost/database')

Forse questo potrebbe causare problemi di prestazioni, ma questo va oltre lo scopo del mio problema iniziale.

Grazie a lexu per commentare la domanda iniziale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top