質問: ### 前提・実現したいこと 現在WSLにPostGreSQLを入れようとしています。 その際色々いじっていたら`CREATE DATABASE`をするとクラッシュするようになってしまいました。 他に入れてあるubutnu18では起きてないので何か設定が悪いのかと思います。 ### 発生している問題・エラーメッセージ 間違えたPostgresSQLを起動したままpg_hba.confのpeerをmd5に変えたところエラーが起きてPostgreSQLが起動しなくなりました。 その際色々いじっていたのですがうまくいかず結局PostgreSQLをすべて`apt remove`,`apr purge`して入れなおすと起動するようになりました。 しかしそのあと上記の通り`CREATE DATABASE`をするとエラーが起きクラッシュ?してしまうようになりました。 ``` postgres=# create database XXX; WARNING: 他のサーバプロセスがクラッシュしたため接続を終了しています DETAIL: 他のサーバプロセスが異常終了し共有メモリが破損した可能性がありましたので、 postmasterはこのサーバプロセスに対し、現在のトランザクションをロールバック し終了するよう指示しました。 HINT: この後、データベースに再接続し、コマンドを繰り返さなければなりません。 サーバとの接続が想定外にクローズされました おそらく要求の処理前または処理中にサーバが異常終了 したことを意味しています。 サーバーへの接続が失われました。リセットしています: 失敗。 !> ``` その後`sudo service postgressql start`をすると ``` * Starting PostgreSQL 10 database server * Error: /usr/lib/postgresql/10/bin/pg_ctl /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/main -l /var/log/postgresql/postgresql-10-main.log -s -o -c config_file="/etc/postgresql/10/main/postgresql.conf" exited with status 1: 2019-04-05 18:11:39.746 JST [24551] LOG: IPv4アドレス"127.0.0.1"、ポート5432で待ち受けています 2019-04-05 18:11:39.763 JST [24551] LOG: Unixソケット"/var/run/postgresql/.s.PGSQL.5432"で待ち受けています 2019-04-05 18:11:39.850 JST [24552] LOG: データベースシステムは中断されました: 2019-04-05 17:49:31 JST まで動作していたことは確認できます 2019-04-05 18:11:39.852 JST [24552] PANIC: ダーティーデータを書き出しできませんでした: 関数は実装されていません 2019-04-05 18:11:39.866 JST [24551] LOG: 起動プロセス (PID 24552)はシグナル6で終了しました: Aborted 2019-04-05 18:11:39.866 JST [24551] LOG: 起動プロセスの失敗のため起動を中断しています 2019-04-05 18:11:39.879 JST [24551] LOG: データベースシステムはシャットダウンしました pg_ctl: サーバを起動できませんでした。 ログ出力を確認してください。 ``` ログのほうは ``` 2019-04-05 17:44:31.830 JST [24439] LOG: IPv4アドレス"127.0.0.1"、ポート5432で待ち受けています 2019-04-05 17:44:31.840 JST [24439] LOG: Unixソケット"/var/run/postgresql/.s.PGSQL.5432"で待ち受けています 2019-04-05 17:44:31.913 JST [24440] LOG: データベースシステムは 2019-04-05 17:44:15 JST にシャットダウンしました 2019-04-05 17:44:32.048 JST [24439] LOG: データベースシステムの接続受け付け準備が整いました。 2019-04-05 17:44:32.597 JST [24447] [不明]@[不明] LOG: 開始パケットが不完全です 2019-04-05 17:52:23.995 JST [24441] PANIC: ダーティーデータを書き出しできませんでした: 関数は実装されていません 2019-04-05 17:52:24.035 JST [24439] LOG: チェックポイント処理プロセス (PID 24441)はシグナル6で終了しました: Aborted 2019-04-05 17:52:24.035 JST [24439] LOG: 他の活動中のサーバプロセスを終了しています 2019-04-05 17:52:24.035 JST [24480] postgres@postgres WARNING: 他のサーバプロセスがクラッシュしたため接続を終了しています 2019-04-05 17:52:24.035 JST [24480] postgres@postgres 詳細: 他のサーバプロセスが異常終了し共有メモリが破損した可能性がありましたので、 postmasterはこのサーバプロセスに対し、現在のトランザクションをロールバック し終了するよう指示しました。 2019-04-05 17:52:24.035 JST [24480] postgres@postgres ヒント: この後、データベースに再接続し、コマンドを繰り返さなければなりません。 2019-04-05 17:52:24.035 JST [24444] WARNING: 他のサーバプロセスがクラッシュしたため接続を終了しています 2019-04-05 17:52:24.035 JST [24444] 詳細: 他のサーバプロセスが異常終了し共有メモリが破損した可能性がありましたので、 postmasterはこのサーバプロセスに対し、現在のトランザクションをロールバック し終了するよう指示しました。 2019-04-05 17:52:24.035 JST [24444] ヒント: この後、データベースに再接続し、コマンドを繰り返さなければなりません。 2019-04-05 17:52:24.076 JST [24488] postgres@postgres FATAL: データベースシステムはリカバリモードです 2019-04-05 17:52:24.086 JST [24439] LOG: 全てのサーバプロセスが終了しました: 再初期化しています 2019-04-05 17:52:24.143 JST [24489] LOG: データベースシステムは中断されました: 2019-04-05 17:49:31 JST まで動作していたことは確認できます 2019-04-05 17:52:24.144 JST [24489] PANIC: ダーティーデータを書き出しできませんでした: 関数は実装されていません 2019-04-05 17:52:24.153 JST [24439] LOG: 起動プロセス (PID 24489)はシグナル6で終了しました: Aborted 2019-04-05 17:52:24.153 JST [24439] LOG: 起動プロセスの失敗のため起動を中断しています 2019-04-05 17:52:24.169 JST [24439] LOG: データベースシステムはシャットダウンしました ``` ### 試したこと 上記に記した通り`apt remove`,`apt purege`は試してみました。 またdataディレクトリを削除してinitdbも行ってみました。 そうすると起動はするのですが`CREATE DATABASE`でだめになってしまいます。 ### 補足情報(FW/ツールのバージョンなど) WSL:Ubuntu16.04 OS:Windows10 pro 1809
回答: 一応解決したといえば解決したので。 ここやここで書かれている通り、どうやらPostgreSQLのfsync機能がうまく機能していないために出ているエラーのようです。 そこでここで書かれているように/etc/postgresql/10/main/postgresql.confに`fsync = off`を追記して起動すると問題なく起動できました。 ただ、試行錯誤してる際にインストールしたUbuntu16、18のほうではこの問題が起きなかったためインストールした時期、またはWindowsのバージョンによっては解決している可能性があるのかもしれません。