update pg_restore pg_dump example because backups aborting postgresql backup pg-dump postgresql-9.2

postgresql - pg_restore - psql restore sql file



Postgresql 9.2 pg_dump versiĆ³n no coincidente (21)

Estoy tratando de volcar una base de datos Postgresql usando la herramienta pg_dump .

$ pg_dump books > books.out

¿Cómo puedo obtener este error?

pg_dump: server version: 9.2.1; pg_dump version: 9.1.6 pg_dump: aborting because of server version mismatch

La opción --ignore-version ahora está depreciada y realmente no sería una solución para mi problema, incluso si hubiera funcionado.

¿Cómo puedo actualizar pg_dump para resolver este problema?


  1. Verifique la (s) versión (s) instalada (s) de pg_dump:

    find / -name pg_dump -type f 2>/dev/null

  2. Mi salida fue:

    /usr/pgsql-9.3/bin/pg_dump /usr/bin/pg_dump

  3. Hay dos versiones instaladas. Para actualizar pg_dump con la versión más nueva:

    sudo ln -s /usr/pgsql-9.3/bin/pg_dump /usr/bin/pg_dump --force

Esto creará el enlace simbólico a la versión más nueva.


** después de instalar la versión de postgres es coincidencia (9.2) Crear un enlace simbólico o un nuevo acceso directo

** - en ''/ usr / bin''

syntag is = sudo ln -s [path for use] [new shortcut name]

ejemplo

sudo ln -s /usr/lib/postgresql/9.2/bin/pg_dump new_pg_dump

- cómo llamar a: new_pg_dump -h 192.168.9.88 -U base de datos postgres


Bueno, tuve el mismo problema ya que tengo instaladas dos versiones de postulación.

Simplemente use el pg_dump adecuado y no necesita cambiar nada, en su caso:

$> /usr/lib/postgresql/9.2/bin/pg_dump books > books.out


Cada vez que actualice o reinstale una nueva versión de PostgreSQL, se instalará una versión más reciente de pg_dump .

Debe haber un directorio PostgreSQL/bin algún lugar de su sistema, bajo la última versión de PostgreSQL que haya instalado (9.2.1 es el último) e intente ejecutar el pg_dump desde ahí.


Como se explicó, esto se debe a que su postgresql está en una versión anterior -> actualizarlo para Mac a través de homebrew:

brew tap petere/postgresql ,

brew install <formula> (por ejemplo: brew install petere/postgresql/postgresql-9.6 )

Eliminar antiguo postgre:

brew unlink postgresql

brew link -f postgresql-9.6

Si ocurre algún error, no olvide leer y seguir instrucciones brew en cada paso.

Mira esto para obtener más información: https://github.com/petere/homebrew-postgresql


Experimenté un problema similar en mi instalación de Fedora 17. Esto es lo que hice para evitar el problema

  • Eliminar el pg_dump incorporado en /usr/bin/pg_dump (como root: "rm / usr / bin / pg_dump")
  • Ahora haz un enlace simbólico de la instalación postgresql

    De nuevo como root ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump

Eso debería hacer el truco


La respuesta suena tonta, pero si obtiene el error anterior y quiere ejecutar el pg_dump para la versión anterior, vaya al directorio bin de postgres y escriba

./pg_dump servername> out.sql ./ ignora la raíz y busca pg_dump en el directorio actual


Los Mac tienen un comando /usr/bin/pg_dump que se usa como predeterminado.

Con la instalación postgresql obtienes otro binario en /Library/PostgreSQL/<version>/bin/pg_dump


Me encontré con esto al usar Heroku en Ubuntu, y así es como lo solucioné:

  1. Agregue el repositorio de PostgreSQL apt como se describe en " Descargas de Linux (Ubuntu) ". (Hay páginas similares para otros sistemas operativos).

  2. Actualice a la última versión (9.3 para mí) con:

    sudo apt-get install postgresql

  3. Recrear el enlace simbólico en /usr/bin con:

    sudo ln -s /usr/lib/postgresql/9.3/bin/pg_dump /usr/bin/pg_dump --force

    El número de versión en la ruta /usr/lib/postgresql/... anterior debe coincidir con el número de server version del server version en el error que recibió. Entonces, si su error dice, pg_dump: server version: 9.9 , luego enlace a /usr/lib/postgresql/9.9/...


Para Mac, use find / -name pg_dump -type f 2>/dev/null encuentra la ubicación de pg_dump

Para mí, tengo los siguientes resultados:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump /usr/local/Cellar/postgresql/9.4.5_2/bin/pg_dump

Si no quiere usar sudo ln -s new_pg_dump old_pg_dump --force , simplemente use:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump para reemplazar con pg_dump en tu terminal

Por ejemplo:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump books > books.out

¡Esto funciona para mi!


Para Macs con Homebrew. Tuve este problema cuando recogí el db de Heroku. Lo arreglé solo ejecutando:

brew upgrade postgresql


Para aquellos que ejecutan Postgres.app :

  1. Agregue el siguiente código a su .bash_profile :

    export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH

  2. Reinicie la terminal.


Para los usuarios de mac poner en la parte superior del archivo .profile.

export PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

entonces corre

. ~/.profile


Puede instalar PostgreSQL 9.2.1 en la máquina cliente pg_dump o simplemente copiar $PGHOME desde la máquina servidor de PostgreSQL a la máquina cliente. Tenga en cuenta que no es necesario initdb un nuevo clúster en la máquina cliente.

Después de que haya terminado de instalar el software 9.2.1, recuerde editar algunas variables de entorno en su archivo .bash_profile .


Puedes simplemente ubicar pg_dump y usar la ruta completa en comando

locate pg_dump /usr/bin/pg_dump /usr/bin/pg_dumpall /usr/lib/postgresql/9.3/bin/pg_dump /usr/lib/postgresql/9.3/bin/pg_dumpall /usr/lib/postgresql/9.6/bin/pg_dump /usr/lib/postgresql/9.6/bin/pg_dumpall

Ahora solo usa la ruta de la versión deseada en el comando

/usr/lib/postgresql/9.6/bin/pg_dump books > books.out


Si está en Ubuntu, es posible que tenga instalada una versión anterior de postgresql-client . Según las versiones en su mensaje de error, la solución sería la siguiente:

sudo apt-get remove postgresql-client-9.1 sudo apt-get install postgresql-client-9.2


Si está utilizando Postgres.app de Heroku, el pg_dump (junto con todos los demás binarios) se encuentra en /Applications/Postgres.app/Contents/MacOS/bin/

entonces en ese caso es

ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump

o

ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.

simplemente agarrarlos a todos


Si la base de datos está instalada en una máquina diferente, probablemente tenga instalada la versión correcta de pg_dump. Esto significa que puede ejecutar el comando pg_dump de forma remota con SSH: ssh username@dbserver pg_dump books > books.out

También puede usar la autenticación de clave pública para la ejecución sin contraseña. Pasos para lograr eso:

  1. Genere (si aún no lo hizo) un par de claves con el comando ssh-keygen.
  2. Copie la clave pública en el servidor de la base de datos, generalmente ~ / .ssh / authorized_keys.
  3. Pruebe si la conexión funciona con el comando ssh.

Si tiene instalado Docker, puede hacer algo como:

$ docker run postgres:9.2 pg_dump books > books.out

Eso descargará el contenedor Docker con Postgres 9.2, ejecutará pg_dump dentro del contenedor y escribirá el resultado.


Trata eso:

export PATH=/usr/local/bin:$PATH


Una respuesta alternativa que no creo que alguien más haya cubierto.

Si tiene múltiples clústeres PG instalados (como yo), puede verlos usando pg_lsclusters .

Debería poder ver la versión y el clúster de la lista que se muestra.

A partir de ahí, puede hacer esto:

pg_dump --cluster=9.6/main books > books.out

Obviamente, reemplace la versión y el nombre del clúster con el apropiado para sus circunstancias a partir de lo que devuelve pg_lsclusters separando la versión y el clúster con un /. Esto se dirige al clúster específico con el que desea ejecutar.