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?
Verifique la (s) versión (s) instalada (s) de pg_dump:
find / -name pg_dump -type f 2>/dev/null
Mi salida fue:
/usr/pgsql-9.3/bin/pg_dump /usr/bin/pg_dump
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é:
Agregue el repositorio de PostgreSQL apt 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:
sudo apt-get install postgresql
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 deserver version
delserver 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 :
Agregue el siguiente código a su
.bash_profile
:export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH
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:
- Genere (si aún no lo hizo) un par de claves con el comando ssh-keygen.
- Copie la clave pública en el servidor de la base de datos, generalmente ~ / .ssh / authorized_keys.
- 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.