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.