phppgadmin liefert leere SQL-Dumps

30.12.2011
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:
 

// [...] 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; } // [...]

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