プロが教えるわが家の防犯対策術!

こんにちは

ただいま、PostgreSQL7.2.3をインストール(Redhat7.3)し、これからpsqlを使い、SQL操作をしようとしていたところですが、psqlと入力すると "psql: FATAL 1: Database "postgres" does not exist in the system catalog."となります。

PostgreSQLのユーザは "postgres","nobody"です。
現在、postgresからpostmaster -Sで起動しています.

下記に端末で行った作業内容をコピーしてみました。
今回インストールの参考にした書籍は"PHPxPostgreSQLで作る最強Webシステム」石井達夫著です。この本の手順に従ったつもりですが、うまくいきません。


[postgres@www root]$ postmaster -S
[postgres@www root]$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
php | postgres | EUC_JP
template0 | postgres | EUC_JP
template1 | postgres | EUC_JP
(3 rows)

[postgres@www root]$ select dtname from php
bash: syntax error near unexpected token `from'
[postgres@www root]$ select dtname from template0
bash: syntax error near unexpected token `from'
[postgres@www root]$
[postgres@www root]$ psql select dtname from php
psql: warning: extra option from ignored
psql: warning: extra option php ignored
psql: FATAL 1: Database "select" does not exist in the system catalog.
[postgres@www root]$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
php | postgres | EUC_JP
template0 | postgres | EUC_JP
template1 | postgres | EUC_JP
(3 rows)

[postgres@www root]$ psql
psql: FATAL 1: Database "postgres" does not exist in the system catalog.

A 回答 (3件)

う~ん。

。これは勘違いだらけですね(^^;

> psqlと入力すると "psql: FATAL 1(snip)
ただ単に、psqlとだけ入力すれば、そのユーザー名と同じ名前のDBが選択されたことになります。
つまり、
psql -n postgres と、DB名「postgres」が選択され、「そんなDBはないよ~」と言うエラーが出ているだけです。

> PostgreSQLのユーザは "postgres","nobody"です。
まあ、この辺りは、もう少し理解を深めればnobodyじゃなくなると思いますが、今のところこれでいいでしょう。。
(私も開発サーバーはnobodyのまま(^^;)

> 現在、postgresからpostmaster -Sで起動しています.
その本はいつの本ですか?
# おそらくバージョン6.5以前の本だと思いますが…
間違いではないですが、postmasterを直接コールするよりも、pg_ctlコマンドを使った方がいいですよ。

> [postgres@www root]$ psql -l
これの後に、ちゃんとリストが表示されているので、DB自体は起動できています。

> [postgres@www root]$ select dtname from php
これ以下は、その名前のDBを立ち上げてから行います。

つまり、
[postgres@www root]$ psql -n php
と入力すると、

Welcome to psql, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit

php=#

と表示されます。
そこで先のコマンドを入力すればOKです。

と、ものすごく初心者のようですが、最初は誰でも初心者です。
頑張ってください!
    • good
    • 0
この回答へのお礼

ありがとうございました。

勘違いだったんですね.
おっしゃるとおりにしてみたら、ちゃんと動いていました.私のあたまが動いていませんでした。

お礼日時:2003/01/23 17:53

あまり当てにしないでください。

だいぶ忘れかけています。

postgresユーザで、環境変数などの設定は問題ないですよね!

.bash_profile

export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="LD_LIBRARY_PATH":"$PGLIB"

を追加して、

$ source ~/.bashrc
を実行する。

データベースの初期化
$ initdb

Success. You can now start the database server using:


できれば、Regressテストを行う。
$ postmaster -S

$ cd /usr/local/src/postgres-7.2.3/src/test/regress
$ make all runtest

いくつかのSQLステートメントに故意にエラーをつくってあるので、エラーが発生します。

ちょっとダウンレベルのPSQLですので、多少異なるかも知れません。参考までに。

今日はこれで、寝ます。
あくまでも、参考例で、どのような場所に、PostgreSQLを導入したかで、ディレクトリィーは異なります。
    • good
    • 0
この回答へのお礼

ありがとうございました。
おっしゃる内容のテストをしましたら下記のような結果になりました。
これでOKでしょうか。

[postgres@www postgres]$ cd /usr/local/src/postgresql-7.2.3/src/test/regress
[postgres@www regress]$ make all runtest
sed -e 's,@bindir@,/usr/local/pgsql/bin,g' \
-e 's,@libdir@,/usr/local/pgsql/lib,g' \
-e 's,@pkglibdir@,/usr/local/pgsql/lib,g' \
-e 's,@datadir@,/usr/local/pgsql/share,g' \
-e 's/@VERSION@/7.2.3/g' \
-e 's/@host_tuple@/i686-pc-linux-gnu/g' \
-e 's,@GMAKE@,make,g' \
-e 's/@enable_shared@/yes/g' \
-e 's/@GCC@/yes/g' \
pg_regress.sh >pg_regress
chmod a+x pg_regress
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -fpic -I../../../src/i
nterfaces/libpq -I../../../src/include -c -o regress.o regress.c
gcc -shared -o regress.so regress.o
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' input/copy.source >sql/copy.sql
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' input/create_function_1.source >sql/create_function_1.sql
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' input/create_function_2.source >sql/create_function_2.sql
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' input/misc.source >sql/misc.sql
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' input/constraints.source >sql/constraints.sql
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' output/copy.source >expected/copy.out
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' output/create_function_1.source >expected/create_function_1.out
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' output/create_function_2.source >expected/create_function_2.out
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' output/misc.source >expected/misc.out
sed -e 's,@abs_srcdir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's
,@abs_builddir@,/usr/local/src/postgresql-7.2.3/src/test/regress,g' -e 's/@DLSUF
FIX@/.so/g' output/constraints.source >expected/constraints.out
make -C ../../../contrib/spi REFINT_VERBOSE=1 refint.so autoinc.so
make[1]: 入ります ディレクトリ `/usr/local/src/postgresql-7.2.3/contrib/spi'
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -fpic -DREFINT_VERBOSE
-I. -I../../src/include -c -o refint.o refint.c
gcc -shared -o refint.so refint.o
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -fpic -DREFINT_VERBOSE
-I. -I../../src/include -c -o autoinc.o autoinc.c
gcc -shared -o autoinc.so autoinc.o
rm refint.o autoinc.o
make[1]: 出ます ディレクトリ `/usr/local/src/postgresql-7.2.3/contrib/spi'
/bin/sh ./pg_regress --schedule=./serial_schedule --multibyte=EUC_JP
(using postmaster on Unix socket, default port)
============== dropping database "regression" ==============
ERROR: DROP DATABASE: database "regression" does not exist
dropdb: database removal failed
============== creating database "regression" ==============
CREATE DATABASE
============== dropping regression test user accounts ==============
============== installing PL/pgSQL ==============
============== running regression test queries ==============
test boolean ... ok
test char ... ok
test name ... ok
test varchar ... ok
test text ... ok
test int2 ... ok
test int4 ... ok
test int8 ... ok
test oid ... ok
test float4 ... ok
test float8 ... ok
test bit ... ok
test numeric ... ok
test strings ... ok
test numerology ... ok
test point ... ok
test lseg ... ok
test box ... ok
test path ... ok
test polygon ... ok
test circle ... ok
test date ... ok
test time ... ok
test timetz ... ok
test timestamp ... ok
test timestamptz ... ok
test interval ... ok
test abstime ... ok
test reltime ... ok
test tinterval ... ok
test inet ... ok
test comments ... ok
test oidjoins ... ok
test type_sanity ... ok
test opr_sanity ... ok
test geometry ... ok
test horology ... ok
test create_function_1 ... ok
test create_type ... ok
test create_table ... ok
test create_function_2 ... ok
test copy ... ok
test constraints ... ok
test triggers ... ok
test create_misc ... ok
test create_aggregate ... ok
test create_operator ... ok
test create_index ... ok
test inherit ... ok
test create_view ... ok
test sanity_check ... ok
test errors ... ok
test select ... ok
test select_into ... ok
test select_distinct ... ok
test select_distinct_on ... ok
test select_implicit ... ok
test select_having ... ok
test subselect ... ok
test union ... ok
test case ... ok
test join ... ok
test aggregates ... ok
test transactions ... ok
test random ... ok
test portals ... ok
test arrays ... ok
test btree_index ... ok
test hash_index ... ok
test privileges ... ok
test misc ... ok
test select_views ... ok
test alter_table ... ok
test portals_p2 ... ok
test rules ... ok
test foreign_key ... ok
test limit ... ok
test plpgsql ... ok
test temp ... ok

======================
All 79 tests passed.
======================

rm regress.o

お礼日時:2003/01/23 18:20

データベース名を指定しないといけません。



$psql [database名]

ですので、データベースphpを使用したいのでしたら、
[postgres@www root]$psql php
となるわけです。

select文にはデータベース名ではなくテーブル名を指定してやれば問題ありません。
また、SQL文の最後は「;(セミコロン)」で閉じてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!