简体   繁体   English

连接拒绝Postgresql

[英]Connection refused to Postgresql

Here is the code I wrote for connecting Postgresql using psycopg2. 这是我为使用psycopg2连接Postgresql而编写的代码。 My psql and pgadminIII is also running. 我的psql和pgadminIII也在运行。

import psycopg2

connection = psycopg2.connect(dbname="gps_heatmap",user="postgres",host="localhost",password="1234")
cursor = connection.cursor()

cursor.execute("DROP TABLE IF EXISTS roads")
cursor.execute("CREATE TABLE roads (" +
                   "id SERIAL PRIMARY KEY," +
                   "name VARCHAR," + 
                   "centerline GEOMETRY)")
cursor.execute("CREATE INDEX ON roads USING GIST(centerline)")

connection.commit()

But following error comes: 但是出现以下错误:

 OperationalError                          Traceback (most recent call last)
    <ipython-input-14-03e3f214b83e> in <module>()
          1 import psycopg2
          2 
    ----> 3 connection = psycopg2.connect(dbname="gps_heatmap",user="postgres",host="localhost",password="1234",port="5432")
          4 cursor = connection.cursor()
          5 

C:\Users\*******\Anaconda3\lib\site-packages\psycopg2\__init__.py in connect(dsn, database, user, password, host, port, connection_factory, cursor_factory, async, **kwargs)
    162                 for (k, v) in items])
    163 
--> 164     conn = _connect(dsn, connection_factory=connection_factory, async=async)
    165     if cursor_factory is not None:
    166         conn.cursor_factory = cursor_factory

OperationalError: could not connect to server: Connection refused (0x0000274D/10061)
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused (0x0000274D/10061)
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?

I edited the pg_hbf.conf as: host all all 0.0.0.0/0 md5 我将pg_hbf.conf编辑为:host all all 0.0.0.0/0 md5

Again,same error repeated 再次,重复相同的错误

Clarification 澄清

The answer below was accepted, however, it was not the solution to the problem... the problem was that the postgresql server was configured for port 5433, not the default port of 5432. This should fix the problem: 下面的答案被接受,但是,它不是问题的解决方案...问题是postgresql服务器配置为端口5433,而不是默认端口5432.这应该解决问题:

connection = psycopg2.connect(database="gps_heatmap", user="postgres", password="1234", host="localhost", port=5433)

Original answer 原始答案

Try replacing dbname="gps_heatmap" with database="gps_heatmap" as the former is intended for use within a connection string and the latter when keyword arguments are passed to psycopg2.connect() : 尝试用database="gps_heatmap"替换dbname="gps_heatmap" ,因为前者用于连接字符串,后者当关键字参数传递给psycopg2.connect()

connection = psycopg2.connect(database="gps_heatmap", user="postgres", host="localhost", password="1234")

Or you could use a connection string: 或者您可以使用连接字符串:

connection = psycopg2.connect("dbname=gps_heatmap user=postgres host=localhost password=1234")

What worked for me was to open Services (search it in Windows), and then look for the postgres service: postgresql-x64-10 in my case. 对我有用的是打开服务(在Windows中搜索),然后寻找postgres服务:postgresql-x64-10在我的情况下。

  1. Run the service 运行该服务
  2. Restart the service 重启服务

After that, the error was gone. 之后,错误消失了。

My error originated by installing MySQL after PostgreSQL, I guess there was a change in the ports or something, but this fixed it. 我的错误源于在PostgreSQL之后安装MySQL,我猜这些端口有什么变化,但这解决了它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM