Introduction
ちょっとしたやらかしだが、Windows 上で PostgreSQL のデータベースを初期化するには
1 | $ cd C:\Program Files\PostgreSQL\16\bin |
のように実行するのだが、この時、誤って C:\Program Files\PostgreSQL\16\data そのものを削除していると…面倒なことになる。
What happened?
権限がない
デフォルトの C:\Program Files\PostgreSQL\16\data はインストール時に作成されたフォルダであるため、手動でフォルダを再度作成しただけではエラーになってしまう。
1 | $ cd C:\Program Files\PostgreSQL\16\bin |
エラーにある通り、作成されるデータベースのファイルはユーザ xxxxxxxx
に所有されることになる。
そのため、データベースフォルダも xxxxxxxx
に所有されている必要がある。xxxxxxxx
にフルコントロールで権限をつけると、初期化に成功する。
1 | $ cd C:\Program Files\PostgreSQL\16\bin |
しかし…これだけでは終わらない。
サービスが起動しない
初期化が終わり PostgreSQL を再起動するとも、サービスがエラーで止まってしまい起動しない。
こちらも権限が影響している。
ここでは NETWORK SERVICE
アカウントが不足している。NETWORK SERVICE
にフルコントロールで権限をつけると、無事に起動に成功する。