1

Я недавно мигрировали свою базу данных с Postgres в MySQL, а также обновление с Rails 2 до Rails 5.Почему мой столбец timestamp для ActiveRecord обновлен до отрицательной бесконечности?

В документации сказано, что по умолчанию для обоих created_on и updated_on столбцов должны быть текущее время, когда создано. По какой-то причине мой столбец updated_on теперь по умолчанию имеет значение -Infinity, что делает некоторые из моих ошибок кода. Что может быть причиной этого?

ответ

2

Оказалось, что проблема была вызвана инструментом миграции, который я использовал для переноса базы данных MySQL в Postgres, называемой NMIG. NMIG переносит не только данные, но и схему, и нет способа остановить ее от перезаписи схемы, даже если у вас уже есть одна настройка. Что ж, по какой-либо причине сопоставление, которое оно использует для столбца updated_on (и предположительно updated_at столбцов тоже?), Определяет значение по умолчанию как -Infinity!

Для того, чтобы обойти эту проблему, я создал свежую базу данных PG, обновляя мой database.yml с новым именем базы данных, запуск db:create и db:schema:load, а затем использовали pg_dump дамп данных Postgres и pg_restore -a восстановить только данные, , не перезаписывая схему. Тада! :)