Подтвердить что ты не робот

Ошибка при нажатии данных в Heroku: смещение часовых поясов за пределами диапазона

Я запускаю следующую команду, чтобы вывести содержимое моей локальной базы данных в Heroku:

heroku db:push --app my-app

Из моего домашнего компьютера это работает безупречно, но с моего рабочего компьютера я получаю эту ошибку:

Ошибка сервера Taps: PGError: ERROR: смещение часового пояса за пределами диапазона: "2011-11-15 12: 00: 00.000000 + 5894114400"

Я не уверен, откуда эта дата, я не могу найти ее в данных где угодно. Любые идеи, что происходит и/или как это исправить?

4b9b3361

Ответ 1

Использование Ruby 1.9.2-p290 вместо 1.9.3-p0 исправило это для меня. По словам Роджера Брауна, вот почему:

Проблема (я думаю), что сортировка изменилась между Ruby 1.9.2 и 1.9.3, поэтому на самом деле это не ошибка кранов. Просто используйте версия heroku работает, чтобы выталкивать базы данных (возможно, 1.9.2).

Ответ 2

Переход на Ruby 1.9.2 с Ruby 1.9.3 не похож на привлекательный вариант для меня.

Страница Heroku devcentre на самом деле предлагает использовать аддон pgbackups для управления базами данных (https://devcenter.heroku.com/articles/pgbackups). Это может звучать только для того, чтобы делать резервные копии производственных баз данных на вашем локальном компьютере, но если вы внимательно его прочтете, у них есть большой раздел, посвященный "импорту базы данных". Что они предлагают, так это то, что вы загружаете свою базу данных в общедоступное местоположение и запускаете предлагаемую команду

heroku pgbackups:restore DATABASE 'http://s3.amazonaws.com/.....mydb.dump?authparameters'

Таким образом, в действительности они предоставляют команды для сброса локальной базы данных, предлагают способы загрузить ее в место, откуда серверы heroku могут извлекать ваш дамп базы данных (если ваша локальная машина для разработки недоступна из Интернета), а затем над командой для ее загрузки в производственную среду на герою.

Просто поместив это здесь, так как я думаю, что проблема сохраняется в течение очень долгого времени без адекватного разрешения реальной проблемы.

Ответ 3

Я запускаю 1.9.3p125 на Heroku и 1.9.3p125 на своей локальной машине. Если я хочу db:push, я просто переключаюсь на 1.9.2 при загрузке:

rvm use ruby-1.9.2-p290
heroku db:push --app my-app
rvm use ruby-1.9.3-p125

Затем, как только нажатие закончится, я вернусь к 1.9.3.

Ответ 4

Это не помогло мне использовать 1.9.3 или 1.9.2.

Как отметил Пабло, проблема связана с сортировкой дат (маршаллинг преобразует дату в 12: 00: 00 + XXXX "несмотря на то, что мой тип даты был" меткой времени без часовой пояс ").

В любом случае, я работал над этим, установив даты в null, чтобы я мог успешно нажать на Heroku. Однако очень плохое решение. Я надеюсь, что ошибка скоро будет исправлена.

Ответ 5

На моей платформе выбора (gentoo linux) Ruby 1.9.2 больше не доступен. Во всяком случае, версия ruby ​​1.8.x может быть установлена ​​одновременно.

Вот как я работал над проблемой:

$ eselect ruby list
Available Ruby profiles:
[1]   ruby18 (with Rubygems)
[2]   ruby19 (with Rubygems) *

$ sudo eselect ruby set 1
Password: 
Successfully switched to profile:
ruby18

Теперь мне пришлось временно прокомментировать мой проект Gemfile всех драгоценных камней, которые не работают с ruby ​​1.8 (например, paperclip)

$ bundle install
& bundle exec heroku db:push

Раскомментировать из Gemfile то, что было прокомментировано до

$ sudo eselect ruby set 2
Password: 
Successfully switched to profile:
ruby19

Не чистое решение, но, по крайней мере, прекрасно работает.

Ответ 6

Просто изменение версии ruby ​​не сработало для меня. Вместо этого я сузил проблему до нового инструмента Herobu Toolbelt.

При использовании старого героя gemy я могу db: push просто отлично. Пока геройки не исправляет это, я создал новый гемсет и установил драгоценный камень герою. Я просто переключаюсь на этот гемсет, когда мне нужно сделать db: push.

Ответ 7

Какую ячейку в Heroku вы используете? Если вы находитесь на bamboo-ree-1.8.7, правильная версия для использования - 1.8.7. Это проблема сортировки и может быть решена с использованием той же версии Ruby как на сервере, так и на клиенте.

Ответ 8

Попробуйте использовать встроенные ответвления без heroku db: push.

ответит серверу POSTGRES_DATABASE_REMOTE_URL пароль для входа

taps push sqlite://db/development.sqlite3 login: pass @localhost: 5000

решил проблему для меня

Ответ 10

На win7-x64, создав приложение в кедре герою и установив pik (rvm-alternative) для использования ruby ​​1.9.2. В двух словах, что я сделал:

  • создано новое приложение heroku в стек кедра (работает ruby-1.9.2)

    heroku create -s cedar
    
  • установлен pik (альтернатива rvm), затем следуйте инструкциям после установки

    gem install pik
    
  • установлен ruby-1.9.2p290, добавлен <RUBY192_INSTALL_DIR>/bin в $env:PATH

  • установлен DevKit для ruby-1.9.2

  • гарантировано, что все необходимые драгоценные камни установлены в обеих версиях ruby, 1.9.3 и 1.9.2

    pik gem install <gem-1> <gem-2> ... <gem-n>
    
  • заданные драгоценные камни db для производственной, разработки и тестовых сред в Gemfile

    # Development + Test:
    group :development, :test do
      gem 'pg', :platforms => :mingw
    end
    
    # Heroku:
    group :production do
      gem 'thin'
      gem 'pg'
    end
    
  • удалена ссылка платформы на mingw32 в Gemfile.lock после

    bundle install
    
  • добавлены новые изменения в Gemfile и Gemfile.lock (сгенерированы) для репо

    git add .
    git commit -am "rebuilt Gemfile for Heroku"
    git push heroku master
    
  • взломали модели данных, подтолкнули локальные данные вверх

    heroku run rake db:migrate
    heroku db:push
    heroku open
    
  • затем переключился на ruby-1.9.3

    pik use 193
    

Ответ 11

Наконец, это помогло с помощью Доши ответить здесь. (И спасибо вам за герннанвиценте выше для подсказки.)

Убедитесь, что ваша версия рубина соответствует версии, запущенной на Heroku. Похоже, что 1.9.2 является самой стабильной версией для этих миграций.

Измените свой gemfile на наличие следующего (при условии, что вы используете SQLite):

group :development do
 gem 'taps', :require => false
 gem 'sqlite3'
end

Вероятно, это еще не решит вашу проблему, потому что ваша команда heroku db:push использует панель инструментов Heroku вместо старого, теперь устаревшего героя. К сожалению, нам действительно нужен старый камень, но панель инструментов Heroku вызывается heroku. Чтобы обойти это, вам нужно будет установить герой герою на вашу версию ruby ​​1.9.2, а затем получить доступ к нему по его конкретному пути к файлу.

Итак, следующие шаги показывают, как вы можете заставить это работать:

Выполните следующие команды в консоли:

rvm install ruby-1.9.2-p320
rvm use ruby-1.9.2-p320
bundle install`
sudo gem install heroku --no-ri --no-rdoc

Затем запустите:

rake assets:clean
bundle exec rake assets:precompile

Завершите свои изменения в Github.

Затем введите в консоль следующее:

~/.rvm/gems/ruby-1.9.2-p320/gems/heroku-2.40.0/bin/heroku db:push (Используйте свой собственный путь к файлу, если он отличается от этого.)