- PR -

pg_dumpのリストアでエラー

投稿者投稿内容
ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 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: と表示された後すぐに次の行が表示されるので
入力することができません。

何かアドバイスいただけますでしょうか。
宜しくお願い致します。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-05-23 16:28
確認させてください。

「hoge」というユーザと「hoge_new」というデータベースは作成されました?

(以下追記)
#ユーザやデータベースがないときに
#同じメッセージが表示されるのを見ちゃったので・・・


私の環境(XPですが)では
ユーザ・データベースを作成してから
set PGPASSWORD=test
set PGUSER=test
とし、環境変数を設定
psql test < db.outって感じで出来ましたよ。

_________________
夏椰 @ わんくま同盟
夏椰の庵

[ メッセージ編集済み 編集者: 夏椰 編集日時 2006-05-23 16:37 ]
ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 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のバージョンが大きく違うからでしょうか・・・?

宜しくお願いします。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-05-24 14:28
>invalid command \\
って、文字コードは大丈夫なんですか?

リダイレクト使ってるみたいだから、それのせいでシェルに何かされてるとか?
-fオプション使ってみてはどうでしょ?

修正:なんだかエスケープがうまく出ないので修正

[ メッセージ編集済み 編集者: 冬寂 編集日時 2006-05-24 14:29 ]
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-05-24 14:32
あ〜〜っとそういえば、異なるバージョン間移行でしたね・・・・。

「23.4. リリース間の移行」
http://www.postgresql.jp/document/pg813doc/html/migration.html

を参照して、新しいPostgreSQLのpg_dumpにてダンプとってやってみてはいかがでしょう?
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-05-24 15:47
引用:

冬寂さんの書き込み (2006-05-24 14:28) より:

って、文字コードは大丈夫なんですか?



この書き込みをみて
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 )
ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 2006-05-25 20:48
こんばんは。回答ありがとうございます。

引用:

夏椰さんの書き込み (2006-05-24 14:32) より:
あ〜〜っとそういえば、異なるバージョン間移行でしたね・・・・。

「23.4. リリース間の移行」
http://www.postgresql.jp/document/pg813doc/html/migration.html

を参照して、新しいPostgreSQLのpg_dumpにてダンプとってやってみてはいかがでしょう?


やってみたのですが、
まず旧サーバでpg_dumpallが使えませんでした。
pg_dumpで取ったものを戻してみたところ、
テーブルの構成だけ入ったのですがデータが入りません・・・。
異なるバージョン間での移行の場合は、こうするしかないんでしょうか・・・。
もうかなり行き詰ってますが、粘って頑張ります。

また何かよいアドバイスがありましたら、宜しくお願いします。

ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 2006-05-26 14:59
こんにちは。
昨日の書き込みの時はかなり行き詰っていて
ぜんぜん状況説明ができていなかったので、
あらためて質問させていただきます。
引用:

夏椰さんの書き込み (2006-05-24 14:32) より:
あ〜〜っとそういえば、異なるバージョン間移行でしたね・・・・。

「23.4. リリース間の移行」
http://www.postgresql.jp/document/pg813doc/html/migration.html

を参照して、新しいPostgreSQLのpg_dumpにてダンプとってやってみてはいかがでしょう?


この方法で試してみたのですが、つまりは古いバージョンでバックアップをとり、
新しいバージョンで取り込む、ということですよね?
私の状況は現在運用中のサーバ(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は使えないようです。

引き続き、宜しくお願いします。


スキルアップ/キャリアアップ(JOB@IT)