]> granicus.if.org Git - postgresql/commitdiff
Improve error reporting when location specified by postgres -D does not exist
authorPeter Eisentraut <peter_e@gmx.net>
Tue, 17 Nov 2015 11:47:18 +0000 (06:47 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 3 Feb 2016 02:03:19 +0000 (21:03 -0500)
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

index 38ba82fe4b66fab912f1cf2a6226fb1726d54911..b8d34b59f58552f7721cbda087f475e204027d2a 100644 (file)
@@ -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;