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-version
opció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_dump
máquina cliente o simplemente copiarlo$PGHOME
desde la máquina del servidor PostgreSQL a la máquina cliente. Tenga en cuenta que no es necesarioinitdb
un 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_profile
archivo.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/bin
con:El número de versión en la
/usr/lib/postgresql/...
ruta anterior debe coincidir con elserver version
nú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_dump
2>/dev/null
ya 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_dump
comando incorporado que se usa por defecto.Con la instalación postgresql obtienes otro binario en
/Library/PostgreSQL/<version>/bin/pg_dump
fuente
Simplemente puede ubicar
pg_dump
y 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 localhost
Si está en Ubuntu, es posible que tenga
postgresql-client
instalada 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_dump
se instala una última versión de .Debe haber un
PostgreSQL/bin
directorio 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_dump
desde allí.fuente
Terminal.app
,find / -name pg_dump -type f 2>/dev/null
Para 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 postgresql
brew link -f postgresql-9.6
Si 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_lsclusters
separando la versión y el clúster con un /. Esto se dirige al clúster específico contra el que desea ejecutar.fuente
pg_dump
por 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
psql
apt-get
no 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.out
Eso descargará el contenedor Docker con Postgres 9.2, se ejecutará
pg_dump
dentro 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 postgres
verá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 postgres
y deberías tener:psql (9.2.1)
También puedes correr
brew services list
para 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.out
Tambié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_dump
o
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/null
buscar 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_dump
para reemplazar conpg_dump
en 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_dump
en/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_dump
Eso 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
&yum
ordpkg
yapt-get
oraptitude
, dependiendo de la distribución. Desinstale el paquete conrpm
o modifique suPATH
variable de entorno en su.bash_profile
para 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)