Я хочу скопировать содержимое моей локальной машины на удаленную (внутри докера). По какой-то причине все сложнее, чем я ожидал: когда я пытаюсь скопировать данные на удаленный, я получаю это "ERROR: CREATE DATABASE cannot run inside a transaction block".
Хорошо ... Итак, я залез в свой док-контейнер, добавил внутрь правило \set AUTOCOMMIT
. Но я все равно получаю эту ошибку.
Это команда, которую я сделал:
// backup
pg_dump -C -h localhost -U postgres woof | xz >backup.xz
а затем на моем удаленном компьютере:
xz -dc backup.xz | docker exec -i -u postgres waf-postgres psql --set ON_ERROR_STOP=on --single-transaction
Но каждый раз, когда я получаю сообщение «CREATE DATABASE не может работать внутри блока транзакции», что бы я ни пытался. Даже если я поставлю автокоммит на «включено».
Вот моя проблема: я не знаю, что такое блок транзакции. И я не понимаю, почему копирование одной базы данных в другую должно быть такой сложной задачей: моя удаленная база данных пуста. Так почему же так много суеты и почему psql просто не может заставить то, что я хочу?
Моя цель - просто скопировать мою локальную базу данных на удаленную.