20170308_ossdb_silver_教科書_8-3

CREATE TABLE users (
id int PRIMARY KEY,
名前 text,
部署id int
);

CREATE TABLE dept (
部署id int PRIMARY KEY,
部署 text
);

INSERT INTO users VALUES (1,'鈴木',2);
INSERT INTO users VALUES (2,'佐藤',3);
INSERT INTO users VALUES (3,'田中',4);
INSERT INTO users VALUES (4,'渡辺',5);

INSERT INTO dept VALUES (1,'総務');
INSERT INTO dept VALUES (2,'企画');
INSERT INTO dept VALUES (3,'営業');
INSERT INTO dept VALUES (4,'開発');

20170307_ossdb_silver_教科書_8-2

CREATE TABLE table_1 (
KeyA text,
KeyB text
);

CREATE TABLE table_2 (
KeyA text,
KeyB text
);

INSERT INTO table_1 VALUES ('table_X','X');
INSERT INTO table_1 VALUES ('table_Y','Y');
INSERT INTO table_1 VALUES ('table_Z','Z');

INSERT INTO table_2 VALUES ('table_1','X');
INSERT INTO table_2 VALUES ('table_2','Y');
INSERT INTO table_2 VALUES ('table_3','Z');
検証中
CREATE TABLE table_3 (
keyA text,
keyB text
);

INSERT INTO table_3 VALUES ('KeyA','X');
INSERT INTO table_3 VALUES ('KeyB','Y');
INSERT INTO table_3 VALUES ('KeyC','Z');
INSERT INTO table_3 VALUES ('KeyB','X');

20170303_ossdb_silver_教科書_8

CREATE TABLE member (
id int PRIMARY KEY,
名前 text,
年齢 int,
部署 text
);
INSERT INTO mumber VALUES (1,'鈴木',25,'営業');
INSERT INTO mumber VALUES (2,'佐藤',30,'開発');
INSERT INTO mumber VALUES (3,'田中',25,'開発');
INSERT INTO mumber VALUES (4,'渡辺',30,'総務');
INSERT INTO mumber VALUES (5,'後藤',41,'営業');
INSERT INTO mumber VALUES (6,'渡辺',25,'開発');
psql --file chapter8.sql -d chapter8

20170304_OSS_DB_Silver_

postgresql自動起動させる。

CentOS7で自動起動はsystemdで管理されている。

下記コマンドでサービス一覧を表示できる。

systemctl list-unit-files -t service

コンパイルしてインストールしたので(?)、サービスが表示されない。

$ systemctl list-unit-files -t service | grep post
postfix.service

CentOS7にPostgreSQL9.3と最新のもので環境構築してみた。

unitファイルというもので、自動起動させるみたい。 Unitファイル - Google 検索

長くなりそうなので、postgresの勉強が終わってからもう一度やってみる。

20170303_ossdb_silver_教科書_3

postgresqlをインストール

■ユーザーを生成

# useradd postgres
# passwd postgres

■必要なパッケージのインストール

# yum install make 
# yum install gcc
# yum install readline
# yum install zlib
# yum install flex
# yum install bison

上記をインストールしてmakeすると、readlineが見つからないというエラーが発生する。

checking for -lreadline... no
checking for -ledit... no
configure: error: readline library not found
If you have readline already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.

[see config.log]とあるので、[config.log]を見てみる。

ちなみに、[config.log]は、./configureディレクトリ内に生成される。

[postgresql-9.0.23]# ls
COPYRIGHT       HISTORY  Makefile  aclocal.m4  config.log  configure.in  doc
GNUmakefile.in  INSTALL  README    config      configure   contrib       src

[config.log]の該当箇所

configure:8317: checking for -lreadline
configure:8349: gcc -o conftest -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -fexcess-precision=standard -fno-aggressive-loop-optimizations  -D_GNU_SOURCE    conftest.c -lreadline -lcrypt -ldl -lm  >&5
/usr/bin/ld: cannot find -lreadline
collect2: error: ld returned 1 exit status
configure:8356: $? = 1
configure: failed program was:

readlineをインストールしているのにreadlineが見つからないいうメッセージが表示されている。

上記エラーについて検索すると、下記の記事が見つかった。

makeで「/usr/bin/ld: cannot find」と表示されるときは − @IT

「それでも同じエラーが出る場合は、xxx-develをインストールする」

開発者ツールがインストールされていないとエラーが発生するようである。

■必要なパッケージのインストール2 下記二つのパッケージをインストールするとmakeできるようになる (2017/3/3時点)

# yum install readline-devel
# yum install zlib-devel

ソースコードを解凍・インストールする

あらかじめ、/optにソースコードをダウンロードする

※教科書に記載のメジャーバージョンの最新版をダウンロードした

# su - postgresql
$ cd /opt/
$ tar xzvf postgresql-9.0.23
$ cd postgresql-9.0.23
$ ,/configure
$ make 
$ su
# make install

インストール完了