#postgresql #heroku #pull #heroku-ci
#postgresql #heroku #тянуть #heroku-ci
Вопрос:
Я подключился к базе данных heroku postgres с помощью pgadmin и создал простую таблицу с двумя простыми столбцами:
id - bigint identity
name - text
и просто две строки:
id name
1 name1
2 name2
Когда я выполняю команду
heroku pg:pull DATABASE_URL mylocaldb1234 --app nameless-dusk-05113
Я получаю сообщение об ошибке:
pg_restore: error: unrecognized data block type (0) while searching archive
! pg_restore errored with 1
Я проверил локальную и удаленную версии postgres, они одинаковые.
Локальная версия:
psql --version
psql (PostgreSQL) 12.5
pg_restore --version
pg_restore (PostgreSQL) 12.5
Удаленная версия:
heroku pg:info
=== DATABASE_URL
Plan: Hobby-dev
Status: Available
Connections: 5/20
PG Version: 12.5
Created: 2021-01-07 07:29 UTC
Data Size: 8.2 MB
Tables: 1
Rows: 2/10000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
Continuous Protection: Off
Add-on: postgresql-spherical-97042
удаленная версия pg_restore:
heroku run pg_restore --version
Running pg_restore --version on ⬢ nameless-dusk-05113... up, run.7775 (Free)
pg_restore (PostgreSQL) 12.5 (Ubuntu 12.5-1.pgdg18.04 1)
Ответ №1:
heroku pg:pull
предполагается автоматизировать немного более ручной процесс, описанный здесь: https://devcenter.heroku.com/articles/heroku-postgres-import-export .
Хотя я столкнулся с той же ошибкой heroku pg:pull
, более ручной процесс работал. В частности,
$ heroku pg:backups:capture
$ heroku pg:backups:download # this creates a file latest.dump in your current directory
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d mydatabasename latest.dump
Если mydatabasename
он еще не существует, вам нужно будет создать его перед запуском pg_restore
.
$ createdb -U postgres mydatabasename