0
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.

Postgresqlに顔パスできる方法

Last updated at Posted at 2020-05-02

はじめに

個人アプリを作成するにあたり、postgresqlを作成する必要がありました。
Rails+postgresqlで構成する場合、通常だとDB作成ができないため、本投稿に書いてみました。

エラーの箇所

terminal
% rails db:create
could not connect to server: Connection refused
        Is the server running on host "localhost" (::1) and accepting
        TCP/IP connections on port 5432?
could not connect to server: Connection refused
        Is the server running on host "localhost" (127.0.0.1) and accepting
        TCP/IP connections on port 5432?
Couldn't create 'Calmania_development' database. Please check your configuration.
rails aborted!
PG::ConnectionBad: could not connect to server: Connection refused
        Is the server running on host "localhost" (::1) and accepting
        TCP/IP connections on port 5432?
could not connect to server: Connection refused
        Is the server running on host "localhost" (127.0.0.1) and accepting
        TCP/IP connections on port 5432?
bin/rails:4:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)

エラーの内容

厳密には訳していませんが、ポート5432が開放されていないのでエラーが出ていました。

原因&考察

mySQLのローカル環境では、localhost:3000 にアクセスしています。 3000はポート番号
postgresqlはdefaultでポート番号:5432を使います。
通常、ポート解放しないと、その番号は使えません。
恐らく、5432は解放されていないと考えました。

アクション

postgresqlのポート変更は、Qiitaで記事が結構見られました。
postgresql.confの記述を変えれば、問題が解決することはわかりました。

しかし、古い記事が多いせいか、指定されたファイルの場所が見つかりません。
macのversionはCatalinaで、まずはファイルの場所を探す必要がありました。

Terminal
~ % cd /usr/local/var/postgres

postgres % ls
PG_VERSION		pg_ident.conf		pg_snapshots		pg_wal
base			pg_logical		pg_stat			pg_xact
global			pg_multixact		pg_stat_tmp		postgresql.auto.conf
pg_commit_ts		pg_notify		pg_subtrans		postgresql.conf
pg_dynshmem		pg_replslot		pg_tblspc		postmaster.opts
pg_hba.conf		pg_serial		pg_twophase		postmaster.pid

次に、postgresql.confの変更を行います。 
テキストファイルのようなので、Vimを使って編集します。

Terminal

postgres % vim postgresql.conf

vimを実行すると、中身が見る事ができます。

Terminal

# -----------------------------
# PostgreSQL configuration file
# -----------------------------
#
# This file consists of lines of the form:
#
#   name = value
#
# (The "=" is optional.)  Whitespace may be used.  Comments are introduced with
# "#" anywhere on a line.  The complete list of parameter names and allowed
# values can be found in the PostgreSQL documentation.
#
# The commented-out settings shown in this file represent the default values.
# Re-commenting a setting is NOT sufficient to revert it to the default value;
# you need to reload the server.
#

省略してますが、かなりの記述量です。 
ここから、該当する場所を見つけにいきます。

iボタンを押すと、通常モード ⇨ insertモード
中身を変更できるようになります。

↓キーを使い、該当する箇所までスクロールします。

Terminal

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432                            # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/tmp'       # comma-separated list of directories
                                        # (change requires restart)
#unix_socket_group = ''                 # (change requires restart)
#unix_socket_permissions = 0777         # begin with 0 to use octal notation
                                        # (change requires restart)
#bonjour = off                          # advertise server via Bonjour
                                        # (change requires restart)
#bonjour_name = ''                      

ここの #listen_assresses = 'localhost'#port = 5432を変更します。

単純にコメントアウトを消せばいいのですが…

私の場合、できるだけこれまでの環境で作成したいので、5432 ⇨ 3000に変更しました。

変更後が、以下になります。

Terminal
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = 'localhost'          # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 3000                             # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/tmp'       # comma-separated list of directories
                                        # (change requires restart)
#unix_socket_group = ''                 # (change requires restart)
#unix_socket_permissions = 0777         # begin with 0 to use octal notation
                                        # (change requires restart)
#bonjour = off                          # advertise server via Bonjour
                                        # (change requires restart)
#bonjour_name = ''                      # defaults to the computer name
                                        # (change requires restart)

ESCボタンを押すと insertモード ⇨ 通常モード に戻ります。

通常モードの状態で、:wqと記述、実行します。(上書き保存)

この状態で、rails db:createを実行しますと

Terminal

rails db:create
Database 'Calmania_development' already exists
Database 'Calmania_test' already exists

もう作っているので、already出てますが、作成できるようになりました。
ローカル環境では問題ないでしょうが、デプロイする時にはまた問題が発生するかもしれません。

0
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
0
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?