ママのスキンケアのお悩みにおすすめアイテム

はじめまして、tanu_2です。
玄箱HGをDebian化し、いろいろと遊んでいます。

PostgreSQLをapt-getでインストールし、Webアプリを動かしていたのですが、昨日より突然、PostgreSQLが動かなくなってしまいました。
原因が分からず、サーバを再起動し、
# /etc/init.d/postgresql start

$ pg_ctl start
などを試してみたのですが、動きません。
念のため、初期化(initdb)も試みたのですが、これも失敗してしまいます。
/var/log/postgresql/postgres/logを覗いてみると、

FATAL: could not write lock file "/var/lib/postgres/data/postmaster.pid": No space

となっており、上記ディレクトリにpostmaster.pid書き込みできないよ、と言われているっぽかったので、パーミッションを変更したりして
みましたが、postgresql startにしろ、pg_ctl startにしろ、それぞれのコマンドで起動すると、強制的にパーミッションが「700」に変更されてしまうようで、結果は同じでした。

どなたか、解決策をご教示願えませんでしょうか?

よろしくお願いします。m(_ _)m

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

A 回答 (4件)

それ以外にも、以下のようなコマンドを使ってデータベースサーバプログラムの起動が出来ますよね。



postmaster -D /usr/local/pgsql/data

ただ、以下のURLのドキュメント内には、次のような記述があります。

「何を実行するにしても、サーバはPostgreSQLユーザアカウントで起動させなければなりません。 rootであってはいけませんし、他のユーザでもいけません。」

パッケージによるインストールであれば、自動でpostgresユーザが作られているはずだと思うけど。(Debianは使ったことないので、確証はなし。)

su - postgres

上記のコマンドでログインするなり、パスワードを忘れたのならroot権限にてpasswdコマンドから変更するなりした後、もう一度postmasterを起動してみよう!

ちなみに、パーミッション関係のエラーは、「Permission denied」ですよね。

参考URL:http://www.postgresql.jp/document/pg803doc/html/ …
    • good
    • 1

#4です。

ほっ、間に合ってよかった。(いえ、独り言です。)


「postmaster」っていうのは、PostgreSQLのデーモンプロセスでもあるわけだから、rootでも操作が出来なくはないはず・・・、といろいろといじっていましたらGUIでの操作方法を発見です。(以下、Fedora Core6[KDE]のばあい。)

1.「K メニュー」→「システム」→「Services」より"system-config-services"を起動.
2.「postgresql」の所にチェックを入れてから、「開始」ボタンを押下。

ちなみに、上記と同じことをCUIにて行いたいのであれば、Red Hat 系の場合は、以下のコマンドを実行します。

/etc/rc.d/init.d/postgresql start

で、質問者さんの場合では何故できなかったのかに関しては、以下のサイトを参考にしてください。(私自身、詳しくは分かりません。近々、Ubuntuもさわってみようかな~と考えているので、その時までには理解しておこうかなと。)

Debianでの起動処理(init)とランレベル(rc.d)の制御
http://park15.wakwak.com/~unixlife/linux/de-init …

インストール手順などが載っているサイト上では、よく「起動スクリプトの作成」についての説明があったりしますが、以下の過去ログにもある通り、通常はいちいち作らなくてもいいはず。

「RedHat ES4でPostgreSQLを自動起動したい」
http://oshiete1.goo.ne.jp/qa2848463.html

ちなみに、既存の起動スクリプトの場所がどこか知りたいのなら、「ファイル/フォルダを検索」にて名前(N):は「postgres」、参照(I):は「file:///」とすれば、だーっといろいろと出てくることと思う。

最後に、DB管理者さん向けのサイト。

エラー時の対処法
http://mland98.rc.kyushu-u.ac.jp/text/skyboard-2 …

この回答への補足

下記のTCP/IP接続に関する補足です。

/var/lib/postgres/data/postgresql.conf

にある

#tcpip_socket = false



tcpip_socket = true

に変更した後、root権限で

# /etc/init.d/postmaster restart

を実行したところ、うまくいくようになりました。

どうやら、PostgreSQLでは、TCP/IPでの接続はデフォルトとはなっておらず、localhost への接続だった場合は、UNIX ドメインソケット経由にした方が接続の速度が速いので、そのようになっているようです。

本当に、勉強になりました。
重ねて、ご回答頂きました皆様に御礼申し上げます。m(_ _)m

補足日時:2007/06/21 10:56
    • good
    • 0
この回答へのお礼

choconamacreamさん、いろいろと詳細な情報までご提供いただきまして、ありがとうございました。m(_ _)m

教えて頂きました情報に基づき、いろいろと試してみたところ、ようやくうまくいきました。
本当にありがとうございました。

原因は、ユーザpostgresのホームディレクトリに作成されていた~data/以下のディレクトリの権限がrootになっていたため、initdbが失敗してしまい、postmasterが起動できなくなっているというもののようでした。
なぜ、root権限になってしまったのかは不明ですが、

$ rm -Rf ~/data/
# rm -Rf /var/lib/postgres/data

とし、それぞれのdataディレクトリを削除した後、

$ initdb

を実行し、DBを初期化、さらに

$ postmaster -i -D /var/lib/postgres/data

により、postmasterを実行することにより解決しました。
ちなみに、root権限による

# /etc/init.d/postgres start

では、TCP/IPでの接続ができない旨、エラーメッセージが出てきてしまい、うまくいかなかったので、postgres権限による-iオプションを付けた起動としました。

PostgreSQLの運用・管理は数年やっているのですが、こんな原因でうまくいかないという状況にはまってしまったのは、初めてだったもので、皆様のお力をお借りさせていただきました。

今回の件で、いろいろと勉強させていただきました。
本当に、ありがとうございました。m(_ _)m

お礼日時:2007/06/21 10:47

"/var/lib/postgres/data/postmaster.pid"


を削除すれば、どうですか
ちなみに、削除しても大丈夫と思うよ
私も、2~3回、経験がある。
まあ、私の場合を同じ原因とは限りませんが
ためしに、やってみては。
    • good
    • 0
この回答へのお礼

gyrocompasさん、回答をいただきまして、ありがとうございました。
(返事が遅くなってしまい、申し訳ございませんでした。m(_ _)m)

教えて頂いた方法ですが、すでに実施していたのですが、解決には至りませんでした。orz

何が悪いんでしょうか???

お礼日時:2007/06/15 19:09

No space

この回答への補足

pastelflowさん、早速の書き込みをいただき、ありがとうございます。

エラーメッセージが途中で切れていました。
正しくは、

 No space left on device

です。ちなみに、このエラーメッセージはpg_ctl startを実行した際のものです。

root権限で、/etc/init.d/postgresql startを実行した際には、若干違うメッセージが出ます。

Starting PostgreSQL database server: postmaster(FAILED)
ERROR: ERROR: PostgreSQL postmaster did not start because of an unknown reason.
/usr/lib/postgresql/bin/postgresql-startup: line 161: cannot create temp file for here document: No space left on device

両方とも、「No space left on device」と出ているのですが、どうすれば解決できるものかと悩んでいます。

補足日時:2007/06/08 13:02
    • good
    • 0

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

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

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

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

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

QPOSTGRESのデータの格納場所はどこでしょうか?

RedHat7.2/PostgreSQL7.2/という環境で、サーバーがクラッシュしてしまい、データを他のサーバに移し変えないといけなくなりました。そこで、PostgreSQLを再インストールしないとデータベースが使えない状況となりました。

データベースを再インストールするのは良いとして、どこかに格納されているはずのデータベースの内容を取り出し、復帰させたいのですが、方法はありますか?大変困っております。よろしくお願いします。

Aベストアンサー

No.1の追加です。
データの移設でよかったと思います。
または、データを読み込むときに、「iオプション」でディレクトリを指定して、元のファイルを読み込んでもよかったと思います。

Qpostmaster.pid とは?

LinuxでPostgreSQLが起動しなくなる、

postmaster.pid ファイルが作成される原因には、
何がありますか?
いくつもあるのでしょうか?

Aベストアンサー

起動時の最初のプロセスIDでしょう。
二重起動防止のためのファイルではないでしょうか。

postmaster.pidのファイルの中身のプロセスIDが起動していませんか?

Qpostgresqlの接続ポート5432から5433に変更したら

お世話になります。
postgresql ポート変更を5432から5433に変更し,psql -lを実行したら、
Is the server running locally and accepting conection on Unix domain socket "tmp/.s.5432"?
というエラーが発生しました。5432に戻すとエラーは消えるのですが、環境上5433で接続したいのですが、どこが悪いのか全く検討がつきません。
ご指導をお願い致します。

Aベストアンサー

標準の5432以外に設定した場合は
psql -p 5433
のように -p オプションでポート番号を指定してください。

Qpsqlコマンド接続によるパスワードについて

psqlコマンドでDBへの接続を行っております。

/usr/local/pgsql/bin/psql -U postgres -h xxx.xxx.xxx.xxx testdb

上記コマンドをコマンドラインから実行するとパスワードが聞かれます。
パスワード設定をmd5にしているためですが、
その設定を変更せずコマンドラインでパスワードを渡すなどしてパスワードの入力を促す処理をスルーしたいのですが全然出来ません。

どのなたかご存知の方、いらっしゃいましたらご教示の程お願い致します。

Aベストアンサー

PGPASSWORD=○○○ /usr/local/pgsql/bin/psql -U postgres -h xxx.xxx.xxx.xxx testdb

QWindows上のPostgreSQLの完全削除→再インストール

いつも参考にしております。ありがとうございます。

さて、WindowsXPにPostgreSQL8.1をインストールしたのですが、起動させ、パスワードを入力すると画面が消えてしまう現象が起きています。

このため、再度入れなおそうとするのですが、「データベースクラスタの初期化」画面で、「データディレクトリが存在します」といったメッセージ(英語)が現れ、パスワードを設定せずに(クラスタを初期化せずに)次に進むようになってしまいます。(クラスタ初期化せずにインストールを完了させても、上記エラーが再発します)

最初のインストールで、そこのパスワードをタイプミスした可能性もありますので、「データベースクラスタの初期化画面」で再度パスワードを設定したいのですが、どのようにしたらよろしいでしょうか?

ちなみに、再インストール前には、
 PostgreSQLの削除
 ユーザーアカウントPostgreの削除
 Document&settingsの下のPostgresフォルダ削除
を行っています。

基本的な質問で、恐縮ですが、どうぞよろしくお願いいたします。

いつも参考にしております。ありがとうございます。

さて、WindowsXPにPostgreSQL8.1をインストールしたのですが、起動させ、パスワードを入力すると画面が消えてしまう現象が起きています。

このため、再度入れなおそうとするのですが、「データベースクラスタの初期化」画面で、「データディレクトリが存在します」といったメッセージ(英語)が現れ、パスワードを設定せずに(クラスタを初期化せずに)次に進むようになってしまいます。(クラスタ初期化せずにインストールを完了させても、上記エラーが...続きを読む

Aベストアンサー

こんにちわ。

「C:\Program Files」内のPostgreのフォルダを消さなければだめだったと思います。

Qデータがリストアできない!!

以下のようにバックアップ後、リストアし、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

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

以下のようにバックアップ後、リストアし、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 ...続きを読む

Aベストアンサー

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

(外していたらすいません)

QWindowsサービスが開始できず困っています

VS2005、VB2005でWindowsサービスを作成し、WindowsXPSP2にインストールしました。管理ツールのサービスで作成したWindowsサービスを開始しようとすると「ローカルコンピュータ上の テストサービス サービスは起動して停止しました。パフォーマンスログ、警告サービスなど、一部のサービスは作業がない場合に自動的に停止します。」と警告がでてしまい開始できません。Windowsサービスの中身は1分ごとにイベントログにコメントを吐き出すという単純なものです。どのようにしたらこのサービスを開始できるのか教えて頂けますでしょうか。ご回答を宜しくお願いします。

Aベストアンサー

VS2003 C# でのWindowsサービス作成時です。

恐らくOnStartメソッド内でエラーが出ているのかと思います。
エラー内容がイベントログに出ているかと思います。
「サービスを開始できません。………」
指示箇所のバグ修正してみてください。

Qpsqlでエラーログをとりたい

こんにちは、honiyonです。

 WindowsXP + Cygwin + PostgreSQL
 という環境で使用しています。
 psqlは
  http://www.interwiz.koganei.tokyo.jp/software/PostgreSQL/windows.html
 にあるWindows版を使用しています。

 この環境で、ファイルに保存してあるSQLを一括処理した場合に発生するエラーをしる為に、実行結果をファイルに保存したいと思い、

 psql -h localhost [DB名] < sqllist.txt > log.txt

 のように実行してみました。
 確かにログは作成されましたが、正常時のみで肝心のエラーメッセージが省かれて保存されます。
 そこで、

 psql -f sqllist.txt -o log.txt -h localhost [DB名]

 としましたが、変化ありませんでした。

 もしエラーメッセージを保存する方法がありましたら、是非ご教授ください(..
 宜しくお願いします(..

こんにちは、honiyonです。

 WindowsXP + Cygwin + PostgreSQL
 という環境で使用しています。
 psqlは
  http://www.interwiz.koganei.tokyo.jp/software/PostgreSQL/windows.html
 にあるWindows版を使用しています。

 この環境で、ファイルに保存してあるSQLを一括処理した場合に発生するエラーをしる為に、実行結果をファイルに保存したいと思い、

 psql -h localhost [DB名] < sqllist.txt > log.txt

 のように実行してみました。
 確かにログは作成されましたが、正常時のみで肝...続きを読む

Aベストアンサー

#1です。
WINDOWS版って書いてありましたね。
リダイレクトの切り替えはWindowsでも可能です。
(psql -h localhost [DB名] < sqllist.txt) 2>&1) > log.txt

2>&1は標準エラー出力2を標準出力1に切り替えという
意味です。
切り替えた結果を()で囲み、されにファイル出力してます。

QPostgreSQL 8.0.2 の ERROR: relation does not exist.

エラーの詳細は以下のとおりです。

まず、ダウンロード後解凍したpostgresql-8.0-ja.msiを
ダブルクリックして、Windows2000serverSP4 に
postgreSQL8.02 をインストールしました。
このときユーザpostgreも新規作成しました。

つぎに、ツールpgAdmin3を使用して上記postgreユーザで
データベースtemplate1のpublicスキームの中に、
ID(int4), Book(text)の2フィールド、IDフィールドをキーとして、
tblBooksという名称の練習用の簡単なテーブルを作成しました。

さらに、pgAdmin3を使用して、このtblBooksテーブルに適当なレコードも4件追加でき、
pgAdmin3のテーブルビューで追加したこのレコード4件を確認できました。

また、pgAdmin3のクエリツールを用いて、クエリの下記を実行すると
正常に実行してくれます。
select version();
"PostgreSQL 8.0.2 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-special)"

ところが、上で作成したtblBooksテーブルを含めたクエリを実行させると、
何回やっても次のようなエラーとなります。
select * from tblBooks;
ERROR: relation "tblbooks" does not exist.------(1)

pgAdmin3でなく、ツールpgSQLを使っても同じエラー(1)がでます。
この"relation does not exist"とは一体どんなエラーなんでしょうか?

環境は, Windows 2000 Server SP4 で、
template1,tblBooksは次のようになっています。

CREATE DATABASE template1
WITH OWNER = postgres
ENCODING = 'EUC_JP'
TABLESPACE = pg_default;
GRANT ALL ON DATABASE template1 TO postgres;

CREATE TABLE "tblBooks"
(
"ID" int4 NOT NULL,
"Book" text,
CONSTRAINT "key" PRIMARY KEY ("ID")
)
WITHOUT OIDS;

エラーの詳細は以下のとおりです。

まず、ダウンロード後解凍したpostgresql-8.0-ja.msiを
ダブルクリックして、Windows2000serverSP4 に
postgreSQL8.02 をインストールしました。
このときユーザpostgreも新規作成しました。

つぎに、ツールpgAdmin3を使用して上記postgreユーザで
データベースtemplate1のpublicスキームの中に、
ID(int4), Book(text)の2フィールド、IDフィールドをキーとして、
tblBooksという名称の練習用の簡単なテーブルを作成しました。

さらに、pgAdmin3を使用して、こ...続きを読む

Aベストアンサー

テーブル名に大文字と小文字が混在しているせい
でしょうか。。。
"tblbooks" か "TBLBOOKS" にしたほうがよい
とは思います。

(SQL文としては、大文字小文字どちらか一方
に統一されていれば、
"tblbooks"でCREATEしたテーブルでも、
"TBLBOOKS"でSELECTできるはずです。)

検証したわけではないので、はずしているかもしれませ
んが、CREATE TABLE "tblbooks" で作ってみても、
再現するでしょうか?

Qlinux postgres アンインストールにつ

いつもお世話になっております。

postgres8系をアンインストールしたく、下記を実行しましたが、
依存関係のエラーが続出してしまい、どうしたらよいかわからなくなってしまいました。
どのようにするのが、定石なのでしょうか。
お手数をお掛けしますが、何卒ご教授くださいますようお願い申し上げます。

[root@localhost ~]# rpm -qa | grep postgres
postgresql-server-8.1.22-1.el5_5.1
postgresql-8.1.22-1.el5_5.1
postgresql-libs-8.1.22-1.el5_5.1
postgresql-tcl-8.1.22-1.el5_5.1
postgresql-contrib-8.1.22-1.el5_5.1
You have new mail in /var/spool/mail/root
[root@localhost ~]# rpm -qa | grep postgres | xargs rpm -e
エラー: 依存性の欠如:
libpq.so.4 は (インストール済み)apr-util-1.2.7-11.el5_5.2.i386 に必要とされています
libpq.so.4 は (インストール済み)php-pgsql-5.1.6-27.el5_5.3.i386 に必要とされています
[root@localhost ~]# rpm -qa | grep apr-util
apr-util-1.2.7-11.el5_5.2
[root@localhost ~]# rpm -qa | grep apr-util | xargs rpm -e
エラー: 依存性の欠如:
libaprutil-1.so.0 は (インストール済み)httpd-2.2.3-43.el5.centos.3.i386 に必要とされています
[root@localhost ~]#

いつもお世話になっております。

postgres8系をアンインストールしたく、下記を実行しましたが、
依存関係のエラーが続出してしまい、どうしたらよいかわからなくなってしまいました。
どのようにするのが、定石なのでしょうか。
お手数をお掛けしますが、何卒ご教授くださいますようお願い申し上げます。

[root@localhost ~]# rpm -qa | grep postgres
postgresql-server-8.1.22-1.el5_5.1
postgresql-8.1.22-1.el5_5.1
postgresql-libs-8.1.22-1.el5_5.1
postgresql-tcl-8.1.22-1.el5_5.1
postgresql-contrib-...続きを読む

Aベストアンサー

yum groupremove "PostgreSQL Database"
でグループでアンインストールする。
というのもありかと。
インストール時に「PostgreSQL データベース」でインストールしたものとかがアンインストールされます。


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

人気Q&Aランキング