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:

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

You may also like...