- - PR -
pg_dumpのリストアでエラー
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-23 15:46
宜しくお願いします。
pg_dumpのリストアでエラーがでます。 結構強引なことをしようとしているのですが、 Linux上で動いていたpotgresql(potgresql7.2)のデータを pg_dump -o hoge > hoge.dump とダンプをとり、Windows上のpotgresql(potgresql8.1)で createdb -E EUC_JP hoge_new でDBを作り、 psql hoge_new < hoge.dump としたところ、以下のエラーが出ました。 ---------------------------------------------------- CREATE TABLE ERROR: table "pgdump_oid" does not have OIDs invalid command \\. ERROR: syntax error at or near "10350380" at character 1 LINE 1: 10350830 0 password for user hoge: password for user hoge: \\connect: FATAL: password authentication failed for user "hoge" ---------------------------------------------------- 1つめのエラーはダンプしたときのオプション(-o)が 邪魔をしている?のでしょうか。 2つめにエラーは・・・、よくわかりませんでした。 Linux上で運用していた時のテーブルのユーザーが"hoge"なので、 ここのパスワードを聞かれていると思うのですが、 password for user hoge: と表示された後すぐに次の行が表示されるので 入力することができません。 何かアドバイスいただけますでしょうか。 宜しくお願い致します。 | ||||
|
投稿日時: 2006-05-23 16:28
確認させてください。
「hoge」というユーザと「hoge_new」というデータベースは作成されました? (以下追記) #ユーザやデータベースがないときに #同じメッセージが表示されるのを見ちゃったので・・・ 私の環境(XPですが)では ユーザ・データベースを作成してから set PGPASSWORD=test set PGUSER=test とし、環境変数を設定 psql test < db.outって感じで出来ましたよ。 _________________ 夏椰 @ わんくま同盟 夏椰の庵 [ メッセージ編集済み 編集者: 夏椰 編集日時 2006-05-23 16:37 ] | ||||
|
投稿日時: 2006-05-24 14:13
回答ありがとうございます。
ユーザーとデータベースを作成していなかったので、作成して set PGPASSWORD set PGUSER で設定してから再度 psql hoge_new < hoge.dump としたところ、大量のエラーが出ました^_^; invalid command \\ が何100行と続き、ところどころに ERROR: syntax error at or near "xxxx" at character 1 LINE1:xxxx (xxxx部分は毎回異なっていますが) が表示されました。。。 postgesのバージョンが大きく違うからでしょうか・・・? 宜しくお願いします。 | ||||
|
投稿日時: 2006-05-24 14:28
>invalid command \\
って、文字コードは大丈夫なんですか? リダイレクト使ってるみたいだから、それのせいでシェルに何かされてるとか? -fオプション使ってみてはどうでしょ? 修正:なんだかエスケープがうまく出ないので修正 [ メッセージ編集済み 編集者: 冬寂 編集日時 2006-05-24 14:29 ] | ||||
|
投稿日時: 2006-05-24 14:32
あ〜〜っとそういえば、異なるバージョン間移行でしたね・・・・。
「23.4. リリース間の移行」 http://www.postgresql.jp/document/pg813doc/html/migration.html を参照して、新しいPostgreSQLのpg_dumpにてダンプとってやってみてはいかがでしょう? | ||||
|
投稿日時: 2006-05-24 15:47
この書き込みをみて Linuxで抜くときの文字コードとWinでの文字コードをどうしたのか気になり始めました・・・・。 pg_dumpでの文字コード指定も注意したほうがいいかもしれませんね。(^^; # http://www.postgresql.jp/document/pg813doc/html/app-pgdump.html # -E encoding # --encoding=encoding _________________ 夏椰 @ わんくま同盟 夏椰の庵 Microsoft MVP for Windows Server System - SQL Server ( Jul 2006 - Jun 2008 ) | ||||
|
投稿日時: 2006-05-25 20:48
こんばんは。回答ありがとうございます。
やってみたのですが、 まず旧サーバでpg_dumpallが使えませんでした。 pg_dumpで取ったものを戻してみたところ、 テーブルの構成だけ入ったのですがデータが入りません・・・。 異なるバージョン間での移行の場合は、こうするしかないんでしょうか・・・。 もうかなり行き詰ってますが、粘って頑張ります。 また何かよいアドバイスがありましたら、宜しくお願いします。 | ||||
|
投稿日時: 2006-05-26 14:59
こんにちは。
昨日の書き込みの時はかなり行き詰っていて ぜんぜん状況説明ができていなかったので、 あらためて質問させていただきます。
この方法で試してみたのですが、つまりは古いバージョンでバックアップをとり、 新しいバージョンで取り込む、ということですよね? 私の状況は現在運用中のサーバ(potgresql7.2)があり、 こちらは停止せずにバックアップをとりたいです。 新サーバ(potgresql8.1)はまだ準備中で公開していないので停止させても 問題ありません。 エラーで invalid command と ERROR: syntax error〜 が大量に、と書きましたが、実はこのエラーの前に他のエラーも出ていました。 (行数が多すぎて最初は確認できませんでした。) CREATE TABLE ERROR: table "pgdump_oid" does not have OIDs invalid command . ERROR: syntax error at or near "10350" at character 1 LINE 1: 10350 0 ^ You are now connected as new user "hoge". CREATE SEQUENCE REVOKE GRANT GRANT このあとにinvalid command と ERROR: syntax error〜 が続いていました。 ダンプを取る時、暗黙の了解で -o を付けていたのですが、 実際は付ける必要があるんでしょうか。オプションの−Eは使えないようです。 引き続き、宜しくお願いします。 |