はじめてのPostgreSQL(バージョン9.3)on Mac OS X
環境セットアップ〜起動まで
- Mac環境
$ uname -a Darwin mac-3.local 14.0.0 Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64
インストール
brew からインストールした。 インストールされたPostgreSQLのバージョンは9.3.5。
$ brew install postgres
インストール時にコンソール出力されたメッセージに従い、 下記コマンドを実行する。(postgres gemを使う場合のみ必要)
$ env ARCHFLAGS="-arch x86_64"
環境設定(~/.bash_profile)
環境変数を定義する。 PGDATAだけ入れておけば良さそうだけど諸々設定してみた。
export POSTGRES_HOME=/usr/local/opt/postgresql/ export PGLIB=${POSTGRES_HOME}/lib export PGDATA=/usr/local/var/postgres export PATH=${POSTGRES_HOME}/bin:${PATH}
環境設定(client設定: Autocommit)
デフォルトでは、autocommitがonになってしまうようなので変更する。 なお、サーバー側では指定できないため、クライアント側のpsqlrcファイルに定義する。
- psqlrcの有効範囲
なお、PSQLRC環境変数を指定すれば、対象ファイルは個別に指定できる。
参考: マニュアル
環境設定(~/.psqlrc)
今回は自分ひとりしか使わないので"~/.psqlrc"に設定する。 "psqlrc"でググっているとプロンプトとか色々設定したくなり、 ほぼYakst - PostgreSQLのコマンドラインの動きを改善してみるから拝借し、"~/.psqlrc"を作成した...
$ vi ~/.psqlrc \set PROMPT1 '%[%033[1m%]%M %n@%/%R%[%033[0m%]%# ' \set PROMPT2 '[more] %R > ' \set AUTOCOMMIT off \encoding utf8 \x auto \set VERBOSITY verbose -- デフォルトでは、NULLはスペースとして表示される -- 空白なのかnullなのか?これで違いが見えるようになる \pset null '[NULL]' -- データベースごとにヒストリファイルを作る \set HISTFILE ~/.psql_history- :DBNAME -- 1行で複数回コマンドが実行されたら、1回だけヒストリに保存 \set HISTCONTROL ignoredups -- キーワード(SELECTなど)を、小文字で入力し始めたとしても -- 大文字に自動変換 \set COMP_KEYWORD_CASE upper -- バージョン表示 \set version 'SELECT version();'
- 動作確認
[local] user@db_hoge=# \set AUTOCOMMIT = 'off' HISTCONTROL = 'ignoredups' PROMPT1 = '%[%033[1m%]%M %n@%/%R%[%033[0m%]%# ' PROMPT2 = '[more] %R > ' PROMPT3 = '>> ' VERBOSITY = 'verbose' VERSION = 'PostgreSQL 9.3.5 on x86_64-apple-darwin14.0.0, compiled by Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn), 64-bit' DBNAME = 'db_hoge' USER = 'user' PORT = '5432' ENCODING = 'UTF8' HISTFILE = '~/.psql_history-db_hoge' COMP_KEYWORD_CASE = 'upper' version = 'SELECT version();'
操作編(起動)
https://www.postgresql.jp/document/9.3/html/server-start.html
自動起動設定は行わず手動起動する。 起動方法はいくつかあるようだが、以下を実行すればOK。
$ pg_ctl start -l /tmp/pg.log # 停止は、"pg_ctl stop"
環境変数(PGDATA)がセットされてい場合は下記エラーとなるので、 "-D"オプションでパス指定、もしくは環境変数を設定する。
$ pg_ctl start -l /tmp/pg.log pg_ctl: no database directory specified and environment variable PGDATA unset $ pg_ctl start -D /usr/local/var/postgres -l /tmp/pg.log
- メモ 以下でも同様の動きになる。 フォアグランドで実行されるので、バックグランドで動作するように"&"指定する。
$ postgres -D /usr/local/var/postgres >/tmp/pg.log 2>&1 &
参考URL
- オンラインマニュアル(psql) PostgreSQL: Documentation: 9.3: psql