Estoy tratando de volcar una base de datos Postgresql usando la herramienta pg_dump .
$ pg_dump books > books.out
Cada vez que recibo este error.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
La --ignore-versionopción ahora está en desuso y realmente no sería una solución a mi problema, incluso si hubiera funcionado.
¿Cómo puedo actualizar pg_dump para resolver este problema?
postgresql
backup
pg-dump
postgresql-9.2
Chris Colla
fuente
fuente

Respuestas:
Puede instalar PostgreSQL 9.2.1 en la
pg_dumpmáquina cliente o simplemente copiarlo$PGHOMEdesde la máquina del servidor PostgreSQL a la máquina cliente. Tenga en cuenta que no es necesarioinitdbun nuevo clúster en la máquina del cliente.Una vez que haya terminado de instalar el software 9.2.1, recuerde editar algunas variables de entorno en su
.bash_profilearchivo.fuente
Encontré esto mientras usaba Heroku en Ubuntu, y así es como lo solucioné:
Agregue el repositorio apt PostgreSQL como se describe en " Descargas de Linux (Ubuntu) ". (Hay páginas similares para otros sistemas operativos).
Actualice a la última versión (9.3 para mí) con:
Recree el enlace simbólico
/usr/bincon:El número de versión en la
/usr/lib/postgresql/...ruta anterior debe coincidir con elserver versionnúmero en el error que recibió. Entonces, si su error dicepg_dump: server version: 9.9, entonces enlace a/usr/lib/postgresql/9.9/....fuente
Verifique las versiones instaladas de pg_dump:
Mi salida fue:
Hay dos versiones instaladas. Para actualizar pg_dump con la versión más reciente:
Esto creará el enlace simbólico a la versión más nueva.
fuente
locate pg_dump2>/dev/nullya que eso arrojará la secuencia de ERROR en lugar de imprimirla en la consola. Creo que uno debería querer ver algún error, excepto algunos casos raros. Por ejemplo, en mi caso, me recuerda que no era root, por lo que no puedo ver algunos directorios donde se instaló la versión más reciente de pg_dump. En general, no elimine los errores.Las Mac tienen un
/usr/bin/pg_dumpcomando incorporado que se usa por defecto.Con la instalación postgresql obtienes otro binario en
/Library/PostgreSQL/<version>/bin/pg_dumpfuente
Simplemente puede ubicar
pg_dumpy usar la ruta completa al comandoAhora solo use la ruta de la versión deseada en el comando
fuente
sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhostSi está en Ubuntu, es posible que tenga
postgresql-clientinstalada una versión anterior . Según las versiones en su mensaje de error, la solución sería la siguiente:fuente
Cada vez que actualiza o reinstala una nueva versión de PostgreSQL,
pg_dumpse instala una última versión de .Debe haber un
PostgreSQL/bindirectorio en algún lugar de su sistema, bajo la última versión de PostgreSQL que haya instalado (9.2.1 es la última) e intente ejecutarlopg_dumpdesde allí.fuente
Terminal.app,find / -name pg_dump -type f 2>/dev/nullPara aquellos que ejecutan Postgres.app :
Agregue el siguiente código a su
.bash_profile:Reiniciar terminal.
fuente
Para Mac con Homebrew. Tuve este problema al buscar el db de Heroku. Lo arreglé simplemente corriendo:
fuente
Para usuarios de mac, coloque en la parte superior del archivo .profile.
entonces corre
fuente
En Ubuntu, simplemente puede agregar el repositorio de Apt más reciente y luego ejecutar:
fuente
Como se explicó, esto se debe a que su postgresql está en versión anterior -> actualícelo para Mac a través de homebrew:
brew tap petere/postgresql,brew install <formula>(p.ej:brew install petere/postgresql/postgresql-9.6)Eliminar viejo postgre:
brew unlink postgresqlbrew link -f postgresql-9.6Si ocurre algún error, no olvide leer y seguir las instrucciones de preparación en cada paso.
Mira esto para más información: https://github.com/petere/homebrew-postgresql
fuente
Una respuesta alternativa que no creo que nadie más haya cubierto.
Si tiene varios 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:
Obviamente, reemplace la versión y el nombre del clúster con el apropiado para sus circunstancias de lo que se devuelve
pg_lsclustersseparando la versión y el clúster con un /. Esto se dirige al clúster específico contra el que desea ejecutar.fuente
pg_dumppor qué no estaba trabajando en uno de mis grupos? Resulta que estaba usando la versión predeterminada de Postgresql, cuando uno de mis clústeres se actualizó a una versión más nueva. Especificando cluster, resolvió el problema.Para mí, el problema era que la actualización
psqlapt-getno estaba resolviendo versiones más nuevas, incluso después deupdate. Lo siguiente funcionó.Ubuntu
Comience con la importación de la clave GPG para los paquetes PostgreSQL.
Ahora agregue el repositorio a su sistema.
Instalar PostgreSQL en Ubuntu
https://www.postgresql.org/download/linux/ubuntu/
fuente
Si tiene instalada la ventana acoplable, puede hacer algo como:
$ docker run postgres:9.2 pg_dump books > books.outEso descargará el contenedor Docker con Postgres 9.2, se ejecutará
pg_dumpdentro del contenedor y escribirá la salida.fuente
La respuesta suena tonta, pero si obtiene el error anterior y desea ejecutar 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
fuente
Tuve el mismo error y así es como lo resolví en mi caso. Esto significa que su versión postgresql es 9.2.1 pero ha iniciado el servicio postgresql de 9.1.6.
Si corres
psql postgresverás:psql (9.2.1, server 9.1.6)Lo que hice para resolver este problema es:
brew services stop [email protected]brew services restart [email protected]Ahora corre
psql postgresy deberías tener:psql (9.2.1)También puedes correr
brew services listpara ver el estado de tus postgres.fuente
** después de instalar la versión de postgres coincide (9.2) Cree un enlace simbólico o un nuevo acceso directo
** - en '/ usr / bin'
ejemplo
- cómo llamar: new_pg_dump -h 192.168.9.88 -U base de datos postgres
fuente
Trata eso:
fuente
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.outTambién puede usar la autenticación de clave pública para la ejecución sin contraseña. Pasos para lograr eso:
fuente
Bueno, tuve el mismo problema ya que tengo instaladas dos versiones de postgreso.
Simplemente use el pg_dump adecuado y no necesita cambiar nada, en su caso:
fuente
Si está utilizando Postgres.app de Heroku, el pg_dump (junto con todos los otros binarios) está en
/Applications/Postgres.app/Contents/MacOS/bin/así que en ese caso es
ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dumpo
ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.simplemente agarrarlos a todos
fuente
Para Mac, use
find / -name pg_dump -type f 2>/dev/nullbuscar la ubicación de pg_dumpPara mí, tengo los siguientes resultados:
Si no quieres usar
sudo ln -s new_pg_dump old_pg_dump --force, solo usa:Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dumppara reemplazar conpg_dumpen su terminalPor ejemplo:
¡Esto funciona para mi!
fuente
Descargue la versión apropiada de postgres aquí:
https://www.postgresql.org/download/
Asegúrese de ejecutar los siguientes comandos (la URL postgresql.org/download generará la URL específica para que la use; la que uso a continuación es solo un ejemplo para centos 7) como sudo:
su versión de pg_dump ahora debe actualizarse, verifique con pg_dump -V
fuente
Experimenté un problema similar en mi instalación de Fedora 17. Esto es lo que hice para solucionar el problema.
pg_dumpen/usr/bin/pg_dump(como raíz: "rm / usr / bin / pg_dump")Ahora haga 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_dumpEso debería hacer el truco
fuente
/usr/( en lugar de/usr/local/,/home/o/opt/, donde eliminar cosas está generalmente bien), realmente necesita usar el administrador de paquetes,rpm&yumordpkgyapt-getoraptitude, dependiendo de la distribución. Desinstale el paquete conrpmo modifique suPATHvariable de entorno en su.bash_profilepara que la versión más nueva se encuentre primero. Si tiene dudas acerca de que algo esté bajo administración de paquetes, userpm -qf /path/to/file(RPM) odpkg -S /path/to/file(dpkg)