PyCharm配置数据源无法连接本地PostgreSQL数据库,代码及Shell可正常连接
我之前帮朋友排查过几乎一模一样的问题,结合你说的shell和代码都能正常连接、唯独PyCharm数据源连不上的情况,给你几个具体的排查和解决方向,你可以挨个试试:
优先查看PostgreSQL的日志文件,这是最快定位问题的核心方法
找到你PostgreSQL数据目录下的pg_log文件夹,打开最新的日志文件,找对应时间的连接失败记录。比如如果是密码认证不通过、IP访问权限不足或者认证方式不匹配,日志里都会写得清清楚楚——这比瞎试SSL开关要高效得多。我之前碰到过的类似问题,就是日志直接提示了IPv6地址的访问权限没开。把localhost换成127.0.0.1或者本地IPv4地址试试
有时候系统会把localhost解析成IPv6的::1,而如果你的PostgreSQL配置文件pg_hba.conf里只允许IPv4的127.0.0.1通过密码访问,就会出现连接失败。你可以在PyCharm的数据源配置里,把主机地址改成127.0.0.1,再重新测试连接。
顺带可以检查下pg_hba.conf里的规则,确保有这两行(PostgreSQL16默认用scram-sha-256认证):host all all 127.0.0.1/32 scram-sha-256 host all all ::1/128 scram-sha-256修改完配置后记得重启PostgreSQL服务才能生效。
尝试直接在JDBC URL里携带用户名和密码
有时候PyCharm的密码输入框可能存在隐藏的特殊字符转义问题,你可以跳过密码输入框,直接把用户名和密码拼到JDBC URL里测试:jdbc:postgresql://localhost:5432/lib1?user=mac1&password=你的密码内容
如果密码里有&、@、=这类特殊字符,需要用URL转义(比如&换成%26),先从简单的密码情况试起。更换JDBC驱动版本试试
虽然42.7.3理论上完全支持PostgreSQL16.x版本,但偶尔会出现小版本兼容的问题。你可以在PyCharm的数据源配置界面,点击驱动旁边的“下载”按钮,尝试换成最新的JDBC驱动,或者稍微旧一点的稳定版本(比如42.6.0),然后重新测试连接。清空PyCharm缓存并重启IDE
有时候IDE的缓存会抽风,导致配置不生效。你可以通过File -> Invalidate Caches...选择“Invalidate and Restart”,等PyCharm重启后再重新配置数据源试试。
备注:内容来源于stack exchange,提问作者Tony Beta Lambda

