5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]postgreでDB作成が失敗したときに確認すべきこと

Last updated at Posted at 2021-01-28

#前提
既にRailsのアプリ開発するための環境構築は完了している

#アプリ新規作成

$ rails new 〇〇 -d postgresql  //〇〇にはアプリ名が入る

postgreSQLを使用するため、「-d」オプションでデータベースの指定をしています。

アプリ新規作成ができたら

$ cd 〇〇  //先程入力したアプリ名のディレクトリに移動

データベース作成

$ bin/rails db:create

コマンド打ったら本来は下記が表示されますが

Created database '〇〇_development'
Created database '〇〇_test' 

私の環境下では

could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Couldn't create 'scaffold_app_development' database. Please check your configuration.
rails aborted!
ActiveRecord::ConnectionNotEstablished: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
/Users/▲▲/dev/rails/scaffold_app/bin/rails:5:in `<top (required)>'
/Users/▲▲/dev/rails/scaffold_app/bin/spring:10:in `block in <top (required)>'
/Users/▲▲/dev/rails/scaffold_app/bin/spring:7:in `tap'
/Users/▲▲/dev/rails/scaffold_app/bin/spring:7:in `<top (required)>'

Caused by:
PG::ConnectionBad: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
/Users/▲▲/dev/rails/scaffold_app/bin/rails:5:in `<top (required)>'
/Users/▲▲/dev/rails/scaffold_app/bin/spring:10:in `block in <top (required)>'
/Users/▲▲/dev/rails/scaffold_app/bin/spring:7:in `tap'
/Users/▲▲/dev/rails/scaffold_app/bin/spring:7:in `<top (required)>'
Tasks: TOP => db:create
(See full trace by running task with --trace)

が表示されました。(▲▲はPCのユーザー名が入るはずです)

#データベース作成失敗の原因
こちらを参考にさせていただきました。
[postgresqlでDBが作れなかったのを解決(してもらった)]
(https://haayaaa.hatenablog.com/entry/2019/01/23/111745)

記事の内容をまとめると
①まずログ(/usr/local/var/log/postgresql)を確認する
②エラーログの出力箇所を見つけ、内容を確認する

私の場合、エラーログは下記の通り出力されていました。

/usr/local/var/log/postgresql
The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 13.1.

postgresqlのデータディレクトリがバージョン11なのに、バージョン13のpostgresqlも入ってしまっていたせいで上手く行かなかったようです。

解決方法としては
brew installでバージョン11のpostgresqlを入れ直すか、
データディレクトリを消してどちらも13をインストールし直す必要があるとのことでした。

#解決方法(データベース作成)
先程あげた解決方法のうち、今回はデータディレクトリを消すことにしました。
まずは、データディレクトリとhomebrewを削除します。

ディレクトリの削除
$ rm -rf /usr/local/var/postgres
homebrewの削除
$ brew uninstall --force postgresql

次にpostgresqlのインストール、そしてディレクトリを再作成します。

postgresqlのインストール
$ brew install postgresql 
ディレクトリ再作成
$ initdb /usr/local/var/postgresql -E utf8

PostgreSQLサーバの起動します。

$ brew services start postgresql

最後にfishの設定ファイルにパスを追記します

vimで設定ファイルを開きます。
$ vim ~/.config/fish/config.fish
以下の内容を追記します。
export PGDATA="/usr/local/var/postgres"
読み込ませます。
$ source ~/.config/fish/config.fish

ここまで行った後にデータベースを作成します。

bin/rails db:create

上手くいくと下記が表示されます(アプリ名:scaffold_app)。

Created database 'scaffold_app_development'
Created database 'scaffold_app_test'
5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?