PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#2 Re : PHP » pg_restore.exe ne fonctionne pas sous Windows en PHP » 12/06/2013 13:13:48

Bonjour.

Je n'ai toujours pas trouvé de solution, help !

#3 Re : PHP » pg_restore.exe ne fonctionne pas sous Windows en PHP » 04/06/2013 08:33:28

Voici la fameuse commande :
"C:\Program Files\pgAdmin III\1.16\pg_restore.exe" --create -d postgres --format=c --ignore-version --verbose --host=localhost --port=5432 -U monUSer maBase.backup

Le Backup est un peu costaud, il pèse 88.8Mo pour :
- 107 Tables
- 684 fonctions

J'ai placé le timeout à 15 minutes et ça ne suffit pas, alors que directement en ligne de commande ça met moins de 2 minutes :s

#4 Re : PHP » pg_restore.exe ne fonctionne pas sous Windows en PHP » 03/06/2013 17:46:55

J'ai l'impression que la requête finie par aboutir, mais va mettre 10x plus de temps.

#5 Re : PHP » pg_restore.exe ne fonctionne pas sous Windows en PHP » 03/06/2013 17:13:50

Là c'est Postgresql, mais Apache retourne juste les erreurs de postgres, il n'y a pas plus d'informations

ex:
[Mon Jun 03 17:14:09 2013] [error] [client 127.0.0.1] pg_restore: connecting to database for restore\r
[Mon Jun 03 17:14:09 2013] [error] [client 127.0.0.1] pg_restore: creating DATABASE caa_cad\r
[Mon Jun 03 17:14:09 2013] [error] [client 127.0.0.1] pg_restore: [archiver (db)] Error while PROCESSING TOC:\r
[Mon Jun 03 17:14:09 2013] [error] [client 127.0.0.1] pg_restore: [archiver (db)] Error from TOC entry 4064; 1262 4443756 DATABASE caa_cad postgres\r
[Mon Jun 03 17:14:09 2013] [error] [client 127.0.0.1] pg_restore: [archiver (db)] could not execute query: ERROR:  database "caa_cad" already exists\r
[Mon Jun 03 17:14:09 2013] [error] [client 127.0.0.1]     Command was: CREATE DATABASE caa_cad WITH TEMPLATE = template0 ENCODING = 'LATIN1';\r

#6 Re : PHP » pg_restore.exe ne fonctionne pas sous Windows en PHP » 03/06/2013 17:06:19

Rien de pertinent, juste le même log que postgresql.

Ça se termine ainsi cependant :
2013-06-03 17:03:00 CEST LOG:  checkpoints are occurring too frequently (15 seconds apart)
2013-06-03 17:03:00 CEST HINT:  Consider increasing the configuration parameter "checkpoint_segments".

#7 Re : PHP » pg_restore.exe ne fonctionne pas sous Windows en PHP » 03/06/2013 16:32:20

En effet j'utilise W7 avec Apache.

Si j'exécute le .bat via l'exec() de PHP j'ai le même souci, mais si je l’exécute manuellement c'est bon. C'est donc bien un problème du droit entre les utilisateurs Windows (ici système) et Postgresql.

J'ai modifié le max_execution_time pour patienter 5 minutes, mais pg_restore ne retourne aucune erreur après ça.

Au final, la base existe bien avec une partie des fonctions, mais aucune table.

#8 Re : PHP » pg_restore.exe ne fonctionne pas sous Windows en PHP » 03/06/2013 15:43:53

Non, pas d'erreurs dans les log de postgres, ni dans le journal des événements.

Mais en regardant le gestionnaire des tâches, c'est l'utilisateur "Système" qui ne fonctionne pas, car ça marche avec l'administrateur (commande directe depuis l'invite).

#9 PHP » pg_restore.exe ne fonctionne pas sous Windows en PHP » 03/06/2013 11:31:41

Pierre
Réponses : 15

Bonjour.

Je vous explique le souci, je souhaite exécuter un pg_restore sous Windows via la commande exec() de PHP.

Je sais qu'il s'agit d'un problème de droit, je ne sais pas si c'est Windows ou PostGres qui pose problème (via le pg_hba.conf ?).

En effet, si j'exécute la commande directement via l'invite de commande cela fonctionne, mais pas par un appel en PHP (pareil si je passe par un intermédiaire en .bat).

Des idées ?

PS : j'avais réussi à régler le problème pour un pg_dump.exe en passant à TRUST dans le pg_hba.conf, mais cela ne change rien ici.

Pied de page des forums

Propulsé par FluxBB