スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Web] phpPgAdmin でエクスポートができないでござる(-d --inserts)

自分で設置した、もしくはなんか業者さんとか外部のひとに phpPgAdmin を設置してもらった、
さてバックアップ取ろうとエクスポートとろうとしたらファイルがダウンロードできない、もしくは画面に
何も表示されない、というのはたまにでくわす事象でございます。

よくあるのは設定ファイルの記載間違い。

phpPgAdminでエクスポートをする方法[to-R]
http://blog.webcreativepark.net/2006/01/11-201906.html

たいていこれで直ります。
pg_dump へのパスを正しくしてやる。

今回、私が体験した事象は、上記のように phpPgAdmin からエクスポートができない。
特にエラーは出ず、画面表示をすると何も表示されず、ダウンロードしようとすると
0バイトのファイルになる。

で、設定ファイルの pg_dump へのパスを調べてみると正しく通ってる。
SSHからは問題なく・・・できる。でも不思議なことに
-d オプション(レコードをCOPYでなくINSERTで出力)が通らない。
ヘルプを読め馬鹿野郎と怒られます。

まあ仕方がないのでヘルプ見て同等の --inserts を指定。
と、ここであれあれと思い、再度 phpPgAdmin に戻って COPY 文指定でエクスポート。

できるじゃん!

普段からフォーマット:SQL指定で出してるもので、pg_dump 自体がおかしいと
思い込んでましたが、どうも -d オプションが効かないだけのようです。
なんでこのサーバに入ってる pg_dump が -d オプション効かないのかは
気にはなるものの、これなら phpPgAdmin のスクリプトを少し書きなおすだけで
INSERT文でエクスポートができそう。

というわけで、探して見つけたこの部分。

■ dbexport.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;
}



$cmd .= ' -d'

という部分が2箇所あるので、そこを

$cmd .= ' --inserts'

に変えてしまいました。( --inserts はハイフン2つなので注意)

これでフォーマット:SQL でも無事に出力できるのを確認。
関連記事
スポンサーサイト

テーマ : web制作
ジャンル : コンピュータ

comment

管理者にだけメッセージを送る

検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。