Невозможно вывести таблицы MySQL, содержащие даты в Sequel.

StackOverflow https://stackoverflow.com/questions/1671401

  •  13-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать Sequel для доступа к базе данных MySQL в Ruby.Когда я пытаюсь получить доступ к таблице, содержащей столбец даты, я получаю сообщение об ошибке.Когда я обращаюсь к таблице без нее, она работает нормально.Что не так?

Пример кода:

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.

Это было полезно?

Решение

У меня такая же проблема.Это было вызвано тем, что Sequel заблокировал нулевую дату MySQL «0000-00-00».Решение, которое я использовал, состояло в том, чтобы установить

Sequel::MySQL.convert_invalid_date_time = nil

(найдено здесь: http://groups.google.com/group/sequel-talk/browse_thread/thread/152a4131bd280966).

Если вы управляете БД, вы также можете запретить MySQL хранить нулевые даты, используя режим SQL NO_ZERO_DATE: http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_no_zero_date.

Другие советы

Берегись:

Sequel::MySQL.convert_invalid_date_time = nil

больше не работает, но я только что исправил эту же проблему, установив опцию для моего объекта БД:

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

Надеюсь, это поможет кому-то еще!

Окончательное решение заключалось в переключении на использование драгоценного камня data_objects Ruby.Это позволило избежать проблем с использованием собственного драйвера C MySQL.

Код корректируется следующим образом:

require 'rubygems'
require 'sequel'

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

Возможно, это может вызвать проблемы с производительностью, но это выходит за рамки моей первоначальной проблемы.

Спасибо lexu за комментарий к исходному вопросу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top