
はじめまして、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
No.3ベストアンサー
- 回答日時:
それ以外にも、以下のようなコマンドを使ってデータベースサーバプログラムの起動が出来ますよね。
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/ …
No.4
- 回答日時:
#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
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
No.2
- 回答日時:
"/var/lib/postgres/data/postmaster.pid"
を削除すれば、どうですか
ちなみに、削除しても大丈夫と思うよ
私も、2~3回、経験がある。
まあ、私の場合を同じ原因とは限りませんが
ためしに、やってみては。
gyrocompasさん、回答をいただきまして、ありがとうございました。
(返事が遅くなってしまい、申し訳ございませんでした。m(_ _)m)
教えて頂いた方法ですが、すでに実施していたのですが、解決には至りませんでした。orz
何が悪いんでしょうか???
No.1
- 回答日時:
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」と出ているのですが、どうすれば解決できるものかと悩んでいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- PostgreSQL PostgreSQLで"pg_dumpall -f data.sql"を使ってバックアップしたデータ 2 2022/09/19 08:14
- JavaScript 変数のスコープの問題? 3 2022/06/23 09:32
- JavaScript React と Electron でデスクトップアプリを開発する環境について 1 2023/02/08 11:16
- PostgreSQL PostgreSQLドライバの登録。 MavenプロジェクトからPostgreSQLへ接続をするため 1 2022/09/26 12:30
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
- PostgreSQL SQLでUPSERTを一度に複数行やる方法 3 2022/03/25 15:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
列が存在しないと言われる
-
SQLにて指定日付より前、かつ最...
-
postgresql についてです
-
plgファイルの開き方
-
postgreSQLのint型は桁数指定が...
-
PostgresSQLの環境設定について
-
自治会総会の成立要件について
-
エクセルで縦のカラムデータを...
-
Windows10がインストールできま...
-
select文の書き方「半角カナ+...
-
Postgresql9.4用のNpgsqlのダウ...
-
新規作成したPostgresqlデータ...
-
SQLでUPSERTを一度に複数行やる...
-
PostgreSQLについて教えてくだ...
-
PostgreSqlでFunctionの作成に...
-
shellからpostgresqlへの変数の...
-
Postgreのupdateコマンドでエラー
-
postgresqlのtableのカラムの型...
-
php、postgresqlを使ってwebア...
-
三段論法を真理値表で証明する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgreSQLが起動しない・・・
-
vbsでからプログラムを、オプシ...
-
コマンドプロンプト
-
再起動する事無くプロセスを消...
-
SSH でログインしてアプリケー...
-
RedHat ES4でPostgreSQLを自動...
-
postgresqlの接続ポート5432か...
-
postgresqlでのトランザクショ...
-
windows版postgresql 異なるバ...
-
PostgreSQLで集約関数をネスト...
-
Windows10でQuickTimeがインス...
-
Access フォーム「使用可能」...
-
odbc接続処理が遅い
-
MySQLとPostgresの同時使用
-
PostgreSQLをC言語でアクセスし...
-
ORA-12571 パケット・ライター障害
-
PostgreSQLの標準文字コードをS...
-
大至急!mdfファイルの中身を見...
-
PostgreSQLを完全に削除出来ない
-
Windows2000でのOutLook97の動...
おすすめ情報