Обсуждение: could not open file "global/pg_database"

Поиск
Список
Период
Сортировка

could not open file "global/pg_database"

От
Sylvain Brohee
Дата:
Dear PostgreSQL users,

I'm running postgreSQL 8.1 (installed with YaST) on a Suse 10.2 machine.
My $PGDATA variable is /home/postgres/data

When I initiate the databases with initdb without argument. It seems to works
as I get this :
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale en_US.UTF-8.
The default database encoding has accordingly been set to UTF8.

fixing permissions on existing directory /home/postgres/data ... ok
creating directory /home/postgres/data/global ... ok
creating directory /home/postgres/data/pg_xlog ... ok
creating directory /home/postgres/data/pg_xlog/archive_status ... ok
creating directory /home/postgres/data/pg_clog ... ok
creating directory /home/postgres/data/pg_subtrans ... ok
creating directory /home/postgres/data/pg_twophase ... ok
creating directory /home/postgres/data/pg_multixact/members ... ok
creating directory /home/postgres/data/pg_multixact/offsets ... ok
creating directory /home/postgres/data/base ... ok
creating directory /home/postgres/data/base/1 ... ok
creating directory /home/postgres/data/pg_tblspc ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 1000
creating configuration files ... ok
creating template1 database in /home/postgres/data/base/1 ... ok
initializing pg_authid ... ok
enabling unlimited row size for system tables ... ok
initializing dependencies ... ok
creating system views ... ok
loading pg_description ... ok
creating conversions ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

    postmaster -D /home/postgres/data
or
    pg_ctl -D /home/postgres/data -l logfile start

But it I try to run the daemon with

pg_ctl -D /home/postgres/data -l logfile start, I get this :
Postmaster running (and that's all, nothing is added in logfile) ... and the
server does not seem to work.

If I try create a database

createdb testdb

createdb: could not connect to database postgres: FATAL:  could not open
file "global/pg_database": No such file or directory

If I try to create a user

createuser sylvain
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
createuser: could not connect to database postgres: FATAL:  could not open
file "global/pg_database": No such file or directory

It seems that the server cannot get access to global/pg_database but why? Even
if all the of this file (777) are available. It cannot get access to it?

Does somebody as any idea?

Thanks a lot,

Sylvain

Re: could not open file "global/pg_database"

От
Tom Lane
Дата:
Sylvain Brohee <sbrohee@ulb.ac.be> writes:
> When I initiate the databases with initdb without argument. It seems to works
> ...
> But it I try to run the daemon with

> pg_ctl -D /home/postgres/data -l logfile start, I get this :
> Postmaster running (and that's all, nothing is added in logfile) ... and the
> server does not seem to work.

Hmm ... "postmaster starting" is all that you should see from pg_ctl,
but the lack of anything in the logfile is very suspicious.  Try it
with -w to see if pg_ctl reports the postmaster really does start.

> It seems that the server cannot get access to global/pg_database but why? Even
> if all the of this file (777) are available. It cannot get access to it?

"No such file or directory" is not a permissions problem.  What I
suspect is that your new postmaster didn't start, and the reason is
that there's still an old postmaster hanging around and monopolizing
the port number, and that you've managed to cut that old postmaster
off at the knees by deleting its database directory tree out from
under it.  If so you need to find and kill the old postmaster (or
maybe a quick system reboot would be easiest).

Or it could be something even more mundane than that, like there's
no permission to write the logfile.  But in any case I bet you're
not talking to the same postmaster process you think you are.

            regards, tom lane