The truth is rarely pure and never simple

phppgadmin liefert leere SQL-Dumps

Wenn phppgadmin kommentarlos leere SQL-Dumps liefert, kann das daran liegen, dass eine veraltete Kommandozeilenoption an pg_dump übergeben wird. In den Webserver-Logs finden sich dann Einträge wie

/usr/lib/postgresql/8.4/bin/pg_dump: invalid option -- 'd'
Try "pg_dump --help" for more information.

Die relevanten Dateien können sich von Version zu Version unterscheiden. Daher wird hier der Weg gezeigt: zunächst muss die richtige Stelle gefunden werden, an der phppgadmin die Option -d setzt.

# grep -l 'pg_dump' /usr/share/phppgadmin/* 
/usr/share/phppgadmin/dataexport.php 
/usr/share/phppgadmin/dbexport.php 
/usr/share/phppgadmin/viewproperties.php

Bei meiner Installation befindet sich der relevante Abschnitt in der Datei dbexport.php und beginnt bei Zeile 110. Dort steht:

[php]// […]
switch ($_REQUEST[‘what’]) {
case ‘dataonly’:
$cmd .= ‘ -a’;
if ($_REQUEST[‘d_format’] == ‘sql’)
$cmd .= ‘ -d’;
elseif (isset($_REQUEST[‘d_oids’]))
$cmd .= ‘ -o’;
break;
case ‘structureonly’:
$cmd .= ‘ -s’;
if (isset($_REQUEST[‘s_clean’]))
$cmd .= ‘ -c’;
break;
case ‘structureanddata’:
if ($_REQUEST[‘sd_format’] == ‘sql’)
$cmd .= ‘ -d’;
elseif (isset($_REQUEST[‘sd_oids’]))
$cmd .= ‘ -o’;
if (isset($_REQUEST[‘sd_clean’]))
$cmd .= ‘ -c’;
break;
}
// […][/php]

Damit der Export wie gewünscht funktioniert, muss an den zwei Stellen im Codeausschnitt -d durch –inserts entfernt werden.