我有一个正在运行的本地 postgres 服务器(在 ubuntu linux 上)。它通过套接字文件进行监听:
$ ls -la /var/run/postgresql/
total 8
drwxrwsrwx 2 postgres postgres 100 2011-04-15 19:06 .
drwxr-xr-x 26 root root 1100 2011-04-15 19:12 ..
-rw------- 1 postgres postgres 5 2011-04-15 19:06 8.4-main.pid
srwxrwxrwx 1 postgres postgres 0 2011-04-15 19:06 .s.PGSQL.5433
-rw------- 1 postgres postgres 34 2011-04-15 19:06 .s.PGSQL.5433.lock
我可以通过命令行正常连接到服务器:
$ psql -d gis -U rory
psql (8.4.7)
Type "help" for help.
gis=# \q
$ psql -d gis
psql (8.4.7)
Type "help" for help.
gis=# \q
我正在尝试使用osm2pgsql,来自OpenStreetMap 项目,将数据导入 pgsql 数据库。
但是我得到的错误是:
$ ./osm2pgsql/osm2pgsql -m -d gis -U rory ../data.osm.bz2
osm2pgsql SVN version 0.70.5
Connection to database failed: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
值得注意的是,它试图使用.s.PGSQL.5432
不存在的套接字文件,而实际的套接字文件名是.s.PGSQL.5433
,文件名几乎完全相同。
为什么它使用了错误的文件名?我该如何让它使用正确的文件名?
答案1
您的 PostgreSQL 服务器似乎已配置为监听端口 5433,而不是默认的 5432。您的 Postgres 客户端应用程序采用默认端口,因此找不到套接字。PGPORT
在运行应用程序之前,请尝试将环境变量设置为 5433。例如:
PGPORT=5433 ./osm2pgsql/osm2pgsql -m -d gis -U rory ../data.osm.bz2
答案2
对我来说,修复此错误的方法是在命令中添加 -H localhost(尽管直观地讲,我不应该这样做)
IE:
osm2pgsql -H localhost -s -d foo switzerland-latest.osm.pbf
警告:我使用的是默认的 postgres 5432 端口