From 607323c95ca62d74668992219569c7cff470b63d Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 17 Nov 2015 06:47:18 -0500 Subject: [PATCH 1/3] Improve error reporting when location specified by postgres -D does not exist Previously, the first error seen would be that postgresql.conf does not exist. But for the case where the whole directory does not exist, give an error message about that, together with a hint for how to create one. --- src/backend/utils/misc/guc.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 38ba82f..b8d34b5 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -4463,6 +4463,17 @@ SelectConfigFiles(const char *userDoption, const char *progname) else configdir = make_absolute_path(getenv("PGDATA")); + if (configdir && stat(configdir, &stat_buf) != 0) + { + write_stderr("%s: could not access \"%s\": %s\n", + progname, + configdir, + strerror(errno)); + if (errno == ENOENT) + write_stderr("Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n"); + return false; + } + /* * Find the configuration file: if config_file was specified on the * command line, use it, else use configdir/postgresql.conf. In any case @@ -4498,7 +4509,7 @@ SelectConfigFiles(const char *userDoption, const char *progname) */ if (stat(ConfigFileName, &stat_buf) != 0) { - write_stderr("%s cannot access the server configuration file \"%s\": %s\n", + write_stderr("%s: could not access the server configuration file \"%s\": %s\n", progname, ConfigFileName, strerror(errno)); free(configdir); return false; -- 2.7.0