postgresql - pricing - Error al enviar datos a Heroku: desplazamiento de zona horaria fuera de rango
heroku postgresql addon (11)
¿En qué pila de Heroku estás? Si está en bamboo-ree-1.8.7, la versión correcta para usar es 1.8.7. Este es un problema de clasificación y se puede resolver utilizando la misma versión de Ruby tanto en el servidor como en el cliente.
Ejecuto el siguiente comando para enviar los contenidos de mi base de datos local a Heroku:
heroku db:push --app my-app
Desde la computadora de mi casa esto funciona perfectamente, pero desde mi computadora de trabajo me sale este error:
Error de servidor de Taps: PGError: ERROR: desplazamiento de zona horaria fuera de rango: "2011-11-15 12: 00: 00.000000 + 5894114400"
No estoy seguro de dónde viene esa fecha, no puedo encontrarla en los datos en ningún lado. ¿Alguna idea de lo que está pasando y / o cómo solucionarlo?
Ejecuto 1.9.3p125 en Heroku y 1.9.3p125 en mi máquina local. Si quiero db:push
I simplemente cambie a 1.9.2 mientras lo carga :
rvm use ruby-1.9.2-p290
heroku db:push --app my-app
rvm use ruby-1.9.3-p125
Luego, una vez que se complete el empuje, volveré a cambiar a 1.9.3.
En mi plataforma de elección (gentoo linux) Ruby 1.9.2 ya no está disponible. De todos modos, una versión de ruby 1.8.x se puede instalar al mismo tiempo.
Aquí es cómo trabajé alrededor del problema:
$ 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
Ahora tenía que comentar temporalmente desde mi proyecto Gemfile todas las gemas que no funcionan con ruby 1.8 (por ejemplo clip de papel)
$ bundle install
& bundle exec heroku db:push
Descomentar de Gemfile lo que se comentó antes
$ sudo eselect ruby set 2
Password:
Successfully switched to profile:
ruby19
No es una solución limpia, pero al menos funciona bien.
En win7-x64, crear aplicaciones en el cedro de heroku y configurar pik (rvm-alternative) para usar ruby 1.9.2 funcionó. En pocas palabras, lo que hice:
creó una nueva aplicación heroku en la pila de cedro (ejecutando ruby-1.9.2)
heroku create -s cedar
pik instalado (rvm-alternative), luego siguió las instrucciones posteriores a la instalación
gem install pik
Ruby-1.9.2p290 instalado, se agregó
<RUBY192_INSTALL_DIR>/bin
a$env:PATH
instalado DevKit a ruby-1.9.2
aseguró que todas las gemas necesarias estén instaladas en ambas versiones ruby, 1.9.3 y 1.9.2
pik gem install <gem-1> <gem-2> ... <gem-n>
gemas de db especificadas para entornos de producción, desarrollo y prueba en
Gemfile
# Development + Test: group :development, :test do gem ''pg'', :platforms => :mingw end # Heroku: group :production do gem ''thin'' gem ''pg'' end
elimina los refs de plataforma a mingw32 en
Gemfile.lock
despuésbundle install
agregó nuevas ediciones en
Gemfile
yGemfile.lock
(generado) para el repositoriogit add . git commit -am "rebuilt Gemfile for Heroku" git push heroku master
rastrearon los modelos de datos, elevaron los datos locales
heroku run rake db:migrate heroku db:push heroku open
luego volvió a ruby-1.9.3
pik use 193
Finalmente conseguí que esto funcionara con la ayuda de la respuesta de Dosha https://github.com/ricardochimal/taps/issues/92#issuecomment-11996909 . (Y gracias a hernanvicente arriba por la propina).
Asegúrate de que tu versión de ruby coincida con la versión que se ejecuta en Heroku. Parece que 1.9.2 es la versión más estable para estas migraciones.
Cambie su gemfile para tener lo siguiente (suponiendo que esté usando SQLite):
group :development do
gem ''taps'', :require => false
gem ''sqlite3''
end
Es probable que esto aún no resuelva su problema porque su heroku db:push
está utilizando la barra de herramientas de Heroku en lugar de la antigua gema de heroku, que ahora está en desuso. Desafortunadamente, en realidad queremos la gema más antigua, pero la barra de herramientas Heroku está siendo llamada por heroku
. Para evitar esto, necesitarás instalar la gema heroku en tu versión de ruby 1.9.2 y luego acceder a ella por su ruta de archivo específica.
Entonces, los próximos pasos muestran cómo puedes hacer que esto funcione:
Ejecute los siguientes comandos en su consola:
rvm install ruby-1.9.2-p320
rvm use ruby-1.9.2-p320
bundle install`
sudo gem install heroku --no-ri --no-rdoc
Entonces corre:
rake assets:clean
bundle exec rake assets:precompile
Confirma tus cambios a Github.
Luego ingrese lo siguiente en su consola:
~/.rvm/gems/ruby-1.9.2-p320/gems/heroku-2.40.0/bin/heroku db:push
(utilice su propio archivo, si es diferente de este).
Intente utilizar los grifos nativos sin heroku db: push.
toca el servidor POSTGRES_DATABASE_REMOTE_URL pase de inicio de sesión
grifos push sqlite: //db/development.sqlite3 login: pass @ localhost: 5000
resuelto el problema para mí
La degradación a Ruby 1.9.2 de Ruby 1.9.3 no me parece una opción atractiva.
La página de devokre de Heroku en realidad sugiere usar el complemento pgbackups para administrar las bases de datos ( https://devcenter.heroku.com/articles/pgbackups ). Puede parecer que es solo para llevar copias de seguridad de las bases de datos de producción a su máquina local, pero si lo lee cuidadosamente, tienen una sección grande que trata sobre "importar una base de datos". Lo que sugieren es que suba su base de datos a una ubicación accesible públicamente y ejecute el comando sugerido
heroku pgbackups:restore DATABASE ''http://s3.amazonaws.com/.....mydb.dump?authparameters''
Así que, en efecto, proporcionan comandos para volcar su base de datos local, sugieren formas de cargarlo en una ubicación de la que los servidores de heroku pueden recuperar el volcado de la base de datos (suponiendo que su máquina de desarrollo local no es públicamente accesible desde Internet) y luego el comando anterior para debe cargarse en el entorno de producción en heroku.
Solo pongo esto aquí, ya que creo que el problema ha persistido durante mucho tiempo sin una resolución adecuada sobre el problema real.
Me ayudó a resolver mi problema, muy práctico https://github.com/ricardochimal/taps/issues/92#issuecomment-11996909
No funcionó para mí, ya sea usando 1.9.3 o 1.9.2.
Como señaló Pablo, el problema tiene que ver con la clasificación de las fechas (la clasificación convierte la fecha a 12: 00: 00 + XXXX "a pesar de que mi tipo de fecha era ''marca de tiempo sin zona horaria'').
De todos modos, lo solucioné ajustando las fechas a nulo, para poder empujar con éxito a Heroku. Muy pobre solución, sin embargo. Espero que el error se resuelva pronto.
Solo cambiar la versión de ruby no me ha funcionado. En cambio, reduje el problema al nuevo Heroku Toolbelt.
Cuando uso la gema heroku más vieja, puedo DB: empujar bien. Hasta que heroku lo solucione, he creado un nuevo gemset e instalado la gema heroku. Solo cambio a este gemset cada vez que necesito hacer un db: push.
Usar Ruby 1.9.2-p290 en lugar de 1.9.3-p0 lo arregló para mí. Según Roger Braun , esta es la razón:
El problema es (creo), que el marshalling cambió entre Ruby 1.9.2 y 1.9.3, por lo que este no es realmente un error de taps. Simplemente use cualquier versión que heroku ejecute para empujar y extraer bases de datos (Probablemente 1.9.2).