以下のようにバックアップ後、リストアし、ODBCを利用し、ACCESSでレコード追加したところ、再度、リストアしようとするとエラーが出て、復元できません。

(1)バックアップ
sudo -u test pg_dump -O testdb > /home/test/test-back-1.dmp
(2)リストア
sudo -u test dropdb testdb
sudo -u test createdb -EEUC_JP testdb
sudo -u test psql -e testdb < /home/test/test-back-1.dmp
(3)ODBCを利用し、ACCESSの追加クエリでtbl_tensuのレコードを追加
(4)再度、リストア
sudo -u test dropdb testdb
sudo -u test createdb -EEUC_JP testdb
sudo -u test psql -e testdb < /home/test/test-back-1.dmp

以下のようなエラーが、レコード追加したテーブルも何もしていないテーブルにも出てしまい、正しく復元できません。

ALTER TABLE ONLY tbl_tensu
ADD CONSTRAINT tbl_tensu_primary_key PRIMARY KEY (hospnum, srycd, yukostymd, yukoedymd);
ERROR: multiple primary keys for table "tbl_tensu" are not allowed

CREATE INDEX idx_tensu_formalname ON tbl_tensu USING btree (formalname);
ERROR: relation "idx_tensu_formalname" already exists
CREATE INDEX idx_tensu_kananame ON tbl_tensu USING btree (kananame);
ERROR: relation "idx_tensu_kananame" already exists
CREATE INDEX idx_tensu_kensagrp ON tbl_tensu USING btree (hospnum, srykbn, knsjisgrpkbn);
ERROR: relation "idx_tensu_kensagrp" already exists
CREATE INDEX idx_tensu_name ON tbl_tensu USING btree (name);
ERROR: relation "idx_tensu_name" already exists

何が原因でどうすれば、復元したときにエラーが出なくなるでしょうか?
どなたか、わかる方ご教示ください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

すでにテーブルが存在する状態で、ダンプファイルからリストアしようとした時のエラーのようです。


「(4)再度、リストア」の時の、データベースの再作成(dropdb/createdb) は本当に成功していますでしょうか。
(3)のODBCで接続した時に、testdbにコネクションが張られた状態となり、
 testdbがdropできず、残ったままで、リストアしているのではないかという気がします。
 (SQL実行中でなくても、コネクションが1つでも張られている限り、
 データベースのdropはできません。)
(4)のsudo -u test dropdb testdb 実行後に、psql -l で確認すると、testdbは
 消えておりますでしょうか。

(外していたらすいません)
    • good
    • 0
この回答へのお礼

copymasterさんありがとうございます。

ACCESSを終了してから、再度、リストアしたら、エラーがでなくなりました。

お礼日時:2011/03/06 08:40

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJDBC(PostgreSQL)のjdbc.jarファイルがありません。

Fedora8にyumでpostgresqlをインストールして
下記を参考にしてJDBCのPOSTGRESQLを使用しようとしましたが
/usr/share/pgsql/jdbc7.1-1.2.jarとかがありません。
jarファイルはどこにインストールされているのですか?
調べる方法を教えて下さい。

http://www.hellohiro.com/jdbcpostgresql.htm

下記のコマンドでは、■があるのでインストール済みだと思います。
classpathは設定していません。

]# rpm -qa | grep -i postgresql
postgresql-libs-8.2.11-1.fc8
postgresql-tcl-8.2.11-1.fc8
postgresql-server-8.2.11-1.fc8
■postgresql-jdbc-8.2.506-1jpp.fc8
postgresql-8.2.11-1.fc8
postgresql-python-8.2.11-1.fc8
postgresql-contrib-8.2.11-1.fc8
]#

Fedora8にyumでpostgresqlをインストールして
下記を参考にしてJDBCのPOSTGRESQLを使用しようとしましたが
/usr/share/pgsql/jdbc7.1-1.2.jarとかがありません。
jarファイルはどこにインストールされているのですか?
調べる方法を教えて下さい。

http://www.hellohiro.com/jdbcpostgresql.htm

下記のコマンドでは、■があるのでインストール済みだと思います。
classpathは設定していません。

]# rpm -qa | grep -i postgresql
postgresql-libs-8.2.11-1.fc8
postgresql-tcl-8.2.11-1.fc8
postg...続きを読む

Aベストアンサー

検索を掛けてみてはどうでしょう。

# find / -name "*jdbc*" -print

全探索を掛けると、結構時間かかるかもしれません。

Qpg_dumpallしたデータを他のマシンでリストアできる??

ご存知の方教えてください。

現在当方、fedora8にてPostgersql8.2.5を運用しております。
ちょっとマシンを変えたいと思いまして、現在のDB情報を
すべて載せ替えたいと思っております。

A → B (Aが旧マシン Bが新マシン)

旧マシンでpg_dumpallしたものをBマシンでリストアする事は可能なのでしょうか?
また、pg_dumpallしたデータはどこへ保存されるのでしょうか??

ご存知の方教えてください。
ではよろしくお願いいたします。

Aベストアンサー

できるかできないかは、やってみれば分かる事ですね

QcsvデータをPostgreSQLにコピー

# rpm -qa | grep postgresql

を実行してみると、

postgresql-python-7.2.2-1
postgresql-odbc-7.2.2-1
postgresql-7.2.2-1
postgresql-perl-7.2.2-1
postgresql-server-7.2.2-1
postgresql-devel-7.2.2-1
postgresql-contrib-7.2.2-1
postgresql-libs-7.2.2-1
postgresql-jdbc-7.2.2-1
postgresql-tcl-7.2.2-1

が表示されたため、

# postgres start

を実行すると、

"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user id to prevent more information on how to properly start the server.

と表示されます。そこで、本サイトのQ&Aを参考にして、

# /etc/init.d/postgresql start

を実行したところ、起動しました。Windows版では、pgAdminIIIのクエリーツールで以下のようにすれば、csvデータ(UTF8)をPostgreSQLの所定のテーブルにインポートできます。

COPY tablename FROM E'C:\\test\\testdata.csv' WITH CSV;

Linux版ではどのようにするのでしょうか?

# rpm -qa | grep postgresql

を実行してみると、

postgresql-python-7.2.2-1
postgresql-odbc-7.2.2-1
postgresql-7.2.2-1
postgresql-perl-7.2.2-1
postgresql-server-7.2.2-1
postgresql-devel-7.2.2-1
postgresql-contrib-7.2.2-1
postgresql-libs-7.2.2-1
postgresql-jdbc-7.2.2-1
postgresql-tcl-7.2.2-1

が表示されたため、

# postgres start

を実行すると、

"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user id to prevent mor...続きを読む

Aベストアンサー

基本は同じです。

psql コマンドでデータベースに接続できていますか?

ユーザーやテーブルが作成できているなら、そこで

COPY tablename FROM '/var/test/testdata.csv' WITH CSV;

のようにすればOKです。

パスの書き方がWindowsと異なるだけでコマンドの構文はまったく同じです。

Qバックアップとリストアについてのエラー

最近、DBを勉強し始めた、初心者です。

現在、pg_dumpコマンドでデータをバックアップして、リストアしようと試みています。DBのデータ容量が小さいうちは、問題なくリストアできるのですが、DBのデータの容量が大きくなってくると、「No buffer space available」とエラー表示されます。

この問題を解決するには、どうしたらいいのでしょうか?

詳しい方がいましたら、教えて下さい。
よろしくお願いします。

Aベストアンサー

メモリ不足かメモリの制限に達しているのでしょうか

QPHPからPythonに移行したい

PHPからPythonに移行したいのですが
バイソンについて全くわからないので
以下のことをさせるにはどうしたらよいのでしょうか?
簡単なサンプルがあると助かります。
OSはWindowsXPとLinuxのCentOS5です。
バージョンは何を使えばよいでしょうか?

(1)URLを指定して、yahooなどのHTMLやHTTPを取得。
(2)CSVファイルを読み込んで、加工後、CSV形式で出力。
(3)配列・ハッシュの値を画面上に出力。
(4)PHPのvar_dump()のようなもの、デバッグに便利なもの
(5)正規表現でマッチしたグループ()を表示
(6)メールクライアントのように受信する
(7)MySQLやPostgreSQLなどデータベースを使う
(8)TK?など窓を開いて、写真画像をクリックすると別の画像に切り替わる。

などです。
これらに詳しい書籍をご存知の方もお願いします。

Aベストアンサー

Pythonのマニュアルです。
http://www.python.jp/doc/2.4/

1, 5. http://reddog.s35.xrea.com/wiki/Python%C8%F7%CB%BA%CF%BF.html
2. http://www.python.jp/doc/release/lib/module-csv.html
3, 4. print文に直接渡す

Q一部のレコードをバックアップ・リストアしたい。

PostgreSQLでデータベースのバックアップは pg_dumpで良いのですが、特定テーブルの一部のレコードを抽出したデータをMySQLに移したいのですが、どのようにすれば良いのでしょうか?

Postgresqlは Linuxで7.2.3
MySQLは WindowsXPで 5.0.11
です。

Aベストアンサー

橋渡しするツールというか方法についての問題ですよね。

手っ取り早いのは、XP上で、accessからODBC経由で
2つのRDBに接続して、コピーが良いと思いますよ。
わかりやすいですし..

QGoogle App EngineのPython

これからPythonを使ってGoogle App Engineを試してみようと思っています。

ブログなどを見ていると、GAEのPythonのバージョンが2.7対応になった、という事ですが、
実際にGoogleの説明ページに行くと、
「Python SDK は、Python 2.5 がインストールされているパソコンで動作」という記述のままです。

http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/devenvironment.html

これからPythonでGAEを始める場合、
インストールするPythonのバージョンは、「2.5」と「2.7」のどちらがいいでしょうか??


教えて下さい。

Aベストアンサー

Google App Engine の日本語ドキュメントは翻訳が遅れているので
英語版の方を見てください。
http://code.google.com/intl/en/appengine/docs/python/gettingstartedpython27/

GAEの実装としてPython2.7とPython2.5は別のランタイムとして扱われていて、
使えるライブラリや機能が少し異なります。
この両者を切り替えるにはちょっとした移植作業が伴うことを覚えておいてください。

日本語の情報の多さを優先するのであれば2.5です。
とくにGAEがリリースされたころの書籍や情報がそのまま使えます。
ただ2.5というPythonのバージョン自体がかなり古いのがやっかいです。

便利で高機能なものが使いたいのであれば2.7です。
こちらはPython2.x系統の最終バージョンなので
これも長く保守されることになると思っています。
まだ Experimetal! 状態なので今後大規模な変更が行われる可能性も少しあります。
さらに日本語の情報に乏しいのが欠点です。

何か今すぐに作りたいものがあるなら2.7
学習のしやすさを優先するなら2.5
というふうに選んでみてはどうですか。

Google App Engine の日本語ドキュメントは翻訳が遅れているので
英語版の方を見てください。
http://code.google.com/intl/en/appengine/docs/python/gettingstartedpython27/

GAEの実装としてPython2.7とPython2.5は別のランタイムとして扱われていて、
使えるライブラリや機能が少し異なります。
この両者を切り替えるにはちょっとした移植作業が伴うことを覚えておいてください。

日本語の情報の多さを優先するのであれば2.5です。
とくにGAEがリリースされたころの書籍や情報がそのまま使えます。
ただ2.5...続きを読む

Qpg_dumpallのバックアップとリストアについて

現在当方、postgresql-8.2.11にてDBサーバを構築しております。
そろそろ、マシン自体も古くなってきたので載せ替えをしようと
試みているのですが、うまく行きません。。。

新しいマシンにはpostgresql-8.4.0をインストールしました。
旧サーバからpg_dumpallにて全データをダンプして新サーバへ
リストアしたのですが、serverlogに下記のログが出てきて、
pgadmin3の様な接続ソフトから接続できません。

WARNING: nonstandard use of \\ in a string literal at character 70
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
ERROR: column c.reltriggers does not exist at character 240
STATEMENT: SELECT c.oid, obj_description(c.oid), c.relhasoids as hasoids, n.nspname AS schemaname, c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, t.spcname AS "tablespace", c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers, c.relacl, c.reltuples, ((select count(*) from pg_inherits where inhparent = c.oid) > 0) as inhtable FROM ((pg_class c LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) LEFT JOIN pg_tablespace t ON ((t.oid = c.reltablespace))) WHERE (c.relkind = 'r'::"char")

リストア後は正常にデータベースもできていますし、テーブルの内容も
問題なくリストアされているようでした。
ダンプされたファイルも秀丸にて確認してみましたが問題ないようでした。

どなたか何か情報をお持ちであれば教えてください。
よろしくお願いいたします。

現在当方、postgresql-8.2.11にてDBサーバを構築しております。
そろそろ、マシン自体も古くなってきたので載せ替えをしようと
試みているのですが、うまく行きません。。。

新しいマシンにはpostgresql-8.4.0をインストールしました。
旧サーバからpg_dumpallにて全データをダンプして新サーバへ
リストアしたのですが、serverlogに下記のログが出てきて、
pgadmin3の様な接続ソフトから接続できません。

WARNING: nonstandard use of \\ in a string literal at character 70
HINT: Use the escap...続きを読む

Aベストアンサー

ログに出ているのは pg_class テーブルの reltriggers カラムが無いというエラーですね。reltriggers カラムは8.4から無くなったようです。(参考URL)
お使いの接続ソフトが、テーブル・カラムなどのメタ情報を取得しようとして失敗しているのでしょう。

8.4 に対応している接続ソフトを使えばよろしいかと。

参考URL:http://www.postgresql.jp/document/pg841doc/html/release-8-4.html#AEN94795

QPythonのバージョンアップについて

CentOS5.5にはPython2.4がデフォルトで入っているのですが、Python2.6でスクリプトを作成する必要がありバージョンアップをしているのですが、dbusモジュールのインポートができず行き詰っております。
具体的には、Python2.4とdbus-pythonがインストールされている状態で、下記のURLを参考にyumでPython2.6をインストールしました。
環境としては「/usr/bin/phthon2.4」と「/usr/bin/phthon2.6」が出来た状態です。
libは「「/usr/lib/phthon2.4」と「/usr/lib/phthon2.6」です。
dbus-pythonのインストール先は「/usr/lib64/python2.4/site-packages/dbus」になります。

Python2.4を環境で下記のインポートは問題ありません。
>>>import dbus

しかし、Python2.6環境で同じコマンドを実行すると下記のようなエラーになります。
>>> import dbus
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named dbus

dbusの再インストールはリスクが高いと思い、モジュールのパスを通してみたところ下記のようなエラーになりました。
>>> import sys
>>> sys.path.append('/usr/lib64/python2.4/site-packages')
>>> import dbus
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.4/site-packages/dbus/__init__.py", line 1, in <module>
from _dbus import *
File "/usr/lib64/python2.4/site-packages/dbus/_dbus.py", line 45, in <module>
import dbus_bindings
ImportError: /usr/lib64/python2.4/site-packages/dbus/dbus_bindings.so: undefined symbol: Py_InitModule4


rpmでモジュールインストール先の変更や、Python自体をソースからインストールなどしてみたのですが、全てうまく行かない状態です。
Pythonバージョンアップ前にインストールされているモジュールの使い方をご存知の方がおられましたら、宜しくお願いします。

CentOS5.5にはPython2.4がデフォルトで入っているのですが、Python2.6でスクリプトを作成する必要がありバージョンアップをしているのですが、dbusモジュールのインポートができず行き詰っております。
具体的には、Python2.4とdbus-pythonがインストールされている状態で、下記のURLを参考にyumでPython2.6をインストールしました。
環境としては「/usr/bin/phthon2.4」と「/usr/bin/phthon2.6」が出来た状態です。
libは「「/usr/lib/phthon2.4」と「/usr/lib/phthon2.6」です。
dbus-pythonのインストール先は...続きを読む

Aベストアンサー

> dbusの再インストールはリスクが高いと思い

なぜそう思いますか。
Python2.4に入っているdbusはバージョンが古くてPython2.6に対応できない可能性があります。
Python2.6側に追加でインストールする方が安全でしょう。

QPostgreSQLと、AccessをODBC接続

PostgreSQL初心者です。

AccessからPostgreSQLに移行しようと思い、ODBCで接続しようとしたのですが、エラーが発生して進めません!
そして、いろいろ試してみたのですが、同じエラーが発生してしまいます。

設定、エラー内容は、下記になります。


エラー内容

「ODBC--呼び出しが失敗しました。

Could not connect to the server;
Could not resolve hostname.(#101)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(#0)」


設定

データソース(ODBC)→システムDSN→PostgreSQL Driver Setup

Database
Server dbserver
User Name localhost
Description
Port 5432

以上、宜しくお願い致します。

OS:WindowsXP Professional Version 2002 Service Pack3
PostgreSQL 9.1 Version 1.14.3
Access XP(2002)
になります。

PostgreSQL初心者です。

AccessからPostgreSQLに移行しようと思い、ODBCで接続しようとしたのですが、エラーが発生して進めません!
そして、いろいろ試してみたのですが、同じエラーが発生してしまいます。

設定、エラー内容は、下記になります。


エラー内容

「ODBC--呼び出しが失敗しました。

Could not connect to the server;
Could not resolve hostname.(#101)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(#0)」


設定

データソース(ODBC)→システムDSN→PostgreS...続きを読む

Aベストアンサー

http://blogs.yahoo.co.jp/kensinisnek/10176003.html

9. 以下のメッセージが出力されたら、接続は成功ですので、「OK」をクリックしてください。 他のメッセージが表示される場合、何かしら設定に問題があると思われます。

の画面は出ましたか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報