質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

2回答

6293閲覧

Windows subsystem for Linux内でPostgresqlサーバを起動したい

YasuoOmori

総合スコア13

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

3クリップ

投稿2019/02/23 02:17

前提・実現したいこと

『Ruby on Rails 5速習実践ガイド』を参考に、railsを使ってwebアプリを作成しようとしています。
(IDEはVScodeで、ターミナルにWindows subsystem for Linuxを使ってUbuntu18.04です)
データベースにPostgresqlを選び、インストールには成功しました。
しかしデータベースを作成しようとした際に、以下のエラーをもらいます。

bin/rails db:create could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

そこで、DBが起動していないのではと思い、起動しようとすると、さらに以下のようなエラーが出ます。これはどのように解決できますか?

UbuntuやPostgresqlの再インストールを3回しましたが、結果は同じでした。

お手数をお掛けしますがよろしくお願いします。

発生している問題・エラーメッセージ

sudo service postgresql start * Starting PostgreSQL 11 database server * Error: /usr/lib/postgresql/11/bin/pg_ctl /usr/lib/postgresql/11/bin/pg_ctl start -D /var/lib/postgresql/11/main -l /var/log/postgresql/postgresql-11-main.log -s -o -c config_file="/etc/postgresql/11/main/postgresql.conf" exited with status 1: 2019-02-22 22:42:30.415 DST [28695] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2019-02-22 22:42:30.496 DST [28696] LOG: database system was interrupted; last known up at 2019-02-22 21:31:50 DST 2019-02-22 22:42:30.497 DST [28696] PANIC: could not flush dirty data: Function not implemented 2019-02-22 22:42:30.502 DST [28695] LOG: startup process (PID 28696) was terminated by signal 6: Aborted 2019-02-22 22:42:30.502 DST [28695] LOG: aborting startup due to startup process failure 2019-02-22 22:42:30.520 DST [28695] LOG: database system is shut down pg_ctl: could not start server Examine the log output.

試したこと

ログを頼りに、次のサイトを参考にして試しましたが、同じでした。

https://medium.com/@stephanedmonson/solution-for-connecting-postgresql-via-wsl-windows-subsystem-for-linux-ubuntu18-c79940fa5742 

sudo /etc/init.d/postgresql start * Starting PostgreSQL 11 database server * Error: /usr/lib/postgresql/11/bin/pg_ctl /usr/lib/postgresql/11/bin/pg_ctl start -D /var/lib/postgresql/11/main -l /var/log/postgresql/postgresql-11-main.log -s -o -c config_file="/etc/postgresql/11/main/postgresql.conf" exited with status 1: 2019-02-22 23:18:54.960 DST [28728] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2019-02-22 23:18:55.062 DST [28729] LOG: database system was interrupted; last known up at 2019-02-22 21:31:50 DST 2019-02-22 23:18:55.064 DST [28729] PANIC: could not flush dirty data: Function not implemented 2019-02-22 23:18:55.069 DST [28728] LOG: startup process (PID 28729) was terminated by signal 6: Aborted 2019-02-22 23:18:55.070 DST [28728] LOG: aborting startup due to startup process failure 2019-02-22 23:18:55.094 DST [28728] LOG: database system is shut down pg_ctl: could not start server Examine the log output.

補足情報(FW/ツールのバージョンなど)

  • VScode 1.31.1
  • postgresql -v 11.2
  • Ubuntu18.04 in Windows subsystem for Linux

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YasuoOmori

2019/02/24 07:10 編集

回答ありがとうございます。切り分けなどの意味がまずわからなかったので、素直にgit bashに移行しました。いずれ挑戦したいと思います。
guest

回答2

0

ベストアンサー

ちょうどその書籍を追っていて、そして今まさにこの問題に直面していたところですが、自分はこの方法で解決しました。
postgresql11が該当書籍出版後に登場しています。そのため、何も指示せずにpostgresqlをインストールすると、11がインストールされてしまうのですが、これが何らかの問題を抱えているので、そのままだと接続できません。

したがって全部のpostgresqlを削除してから、明示的にpostgresql10をインストールするようにしたら大丈夫です(11の設定ファイルも邪魔していることがわかったので消してください)

Re: WSL (windows subsystem on linux) users will need to turn fsync off as of 11.2

Ubuntu

1$sudo apt remove postgresql* 2$sudo rm -rf /etc/postgresql/11 /*設定ファイルも消さないと色々邪魔される*/ 3$sudo apt install postgresql-10 4$sudo /etc/init.d/postgresql start

【postgresql11で起動するには】
pg11はaptリポジトリで用意されていないので、キーを追加してアップデートするといいようです。敢えて11で動かさないといけないこともないでしょうけど。また、色々調べたら、postgresql.confからfsyncというステータスをoffにする必要があることがわかりました(読み込み専用となっている場合は、mainフォルダに書き込み権限を与える必要があります)

Ubuntu

1$sudo chmod -R 777 /etc/postgresql/11/main 2$sudo vi /etc/postgresql/11/main/postgresql.conf

conf

1/*postgresql.conf内でfsyncを検索*/ 2fsync = off  /*コメントアウトを外しステータスをoffにする*/

Getting Started With PostgreSQL 11 on Ubuntu 18.04

Railsの画像

投稿2019/03/05 17:45

編集2019/03/07 00:13
FKM

総合スコア3604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YasuoOmori

2019/04/20 07:59 編集

つながりました!!! ただ一つだけ付け加えさせていただきますと、postgresql10.7をインストールしても、Is the server running?のようなエラーが出てきました。しかし、fsyncをoffにしたところ、解決しました。11じゃなくても、設定しないといけないということでしょうかね?とりあえず、本当にありがとうございます!
FKM

2019/03/07 03:00 編集

報告ありがとうございます。その件は自分も再検証してみた結果、設定ファイルが邪魔してると考えています。 11の設定ファイルを全部削除した後、10に対してもとのpostgresql.confの設定に戻したらつながりましたので、そう書いています。
guest

0

postgreSQL10.4ですが、動作実績があります。
同じ内容のログは出ることもあるんですが、WARNINGレベルで結果的に起動できていますね。

サービスを使わずにpostgresユーザで以下の方法で起動してみてはいかがでしょうか?

/usr/local/pgsql/bin/pg_ctl start -w
※pg_ctlの場所はインストール先よって違うことがあります。

投稿2019/02/23 14:27

mackerel6.023

総合スコア317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YasuoOmori

2019/02/24 07:27 編集

ご回答ありがとうございます。WSLでの開発環境構築はしばらく諦めようと思います。これに一週間以上悩まされていまして、コードを書くのが重要なのに、環境構築で一日がただただ過ぎていくのが、無駄なように感じています。上述しましたが、VScodeのターミナルをGit Bashで学習したいと思います。そこではDBを作成出来ています。本当に優しく指導してくださってありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問