Will Childs-Klein <willck93@gmail.com> writes:
> I've been doing some extensive modifications of the storage manager (md.c)
> in postgres. My code all compiles just fine, but when i run initdb, i
> receive the following output:
> "creating template1 database in /home/accts/wdc22/pgdata/base/1 ... ok
> initializing pg_authid ... WARNING: no roles are defined in this database
> system
> HINT: You should immediately run CREATE USER "wdc22" SUPERUSER;.
> FATAL: database "template1" does not exist
> child process exited with exit code 1"
> I've searched around for what this means, but I can't find anything.
A few moments with grep would've showed you that the WARNING means no
rows were found in a seqscan of pg_authid. The system is able to plow
ahead anyway in single-user mode, but then it evidently also can't find
the row that should exist in pg_database for template1. So yeah,
something is wrong with your storage stuff; the rows inserted during
bootstrap aren't getting found, or aren't visible, or some such, during
a subsequent single-user-mode run.
I'd suggest running initdb with --noclean and then trying to start a
standalone backend by hand under gdb, so you can trace through things
and see why it's not seeing the rows. You could also eyeball the
so-far-created files to see if they contain what you expect.
regards, tom lane