You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

psql创建的PostgreSQL数据库未被PgAdmin4识别且Django连接失败求助

问题原因与解决方案

这问题我遇过不少,核心原因很明确——你系统里装了两个完全独立的PostgreSQL实例,一个是9.5.12版本,另一个是10.4版本,它们各自维护一套独立的数据库集群,数据完全不互通。

为什么会出现这种情况?

  • 你用命令行的psql工具时,它默认连接的是9.5.12版本的PostgreSQL实例,所以你创建的portfoliodb只存在于这个实例的数据库集群里。
  • 而PgAdmin4默认配置连接的是10.4版本的实例,这个实例的集群里根本没有你用命令行创建的库,自然看不到;Django的配置指向的localhost:5432如果是10.4实例的端口,那肯定会提示“数据库不存在”。
  • 当你在PgAdmin4里创建同名库时,这个库是建在10.4实例的集群里,Django能连上就不奇怪了。

怎么验证这个猜想?

  • 查看系统中的PostgreSQL服务:
    • Windows用户:打开「服务」(可以通过Win+R输入services.msc打开),找名字带PostgreSQL的服务,应该能看到两个分别标注版本号的服务,比如postgresql-x64-9.5和postgresql-x64-10。
    • Linux/macOS用户:执行systemctl list-units | grep postgresql(Linux)或者brew services list | grep postgresql(macOS用brew安装的情况),会看到两个不同版本的服务进程。
  • 查看实例的端口:
    • 在命令行的psql里执行SHOW port;,记下这个端口号;再去PgAdmin4里查看连接的端口(右键连接的Server -> Properties -> Connection),对比两个端口,大概率不一样。

解决办法

你可以根据自己的需求选下面的方案:

  1. 卸载其中一个实例,统一使用同一个版本:
    如果不需要同时保留两个PostgreSQL版本,直接卸载掉不用的那个(比如9.5或者10.4),然后确保Django和PgAdmin4都连接到保留的实例即可。
  2. 让Django连接到9.5版本的实例:
    如果你想保留用命令行创建的portfoliodb,找到9.5实例的端口(比如可能是5433),修改Django的数据库配置里的PORT字段为对应端口,保存后重新尝试连接和迁移。
  3. 在PgAdmin4里添加9.5实例的连接:
    打开PgAdmin4,右键左侧的「Servers」→「Create」→「Server」,在弹出的窗口里:
    • 「General」标签随便填个名称(比如“PostgreSQL 9.5”);
    • 「Connection」标签填入9.5实例的主机(一般是localhost)、刚才查到的端口、用户名postgres,点击保存后就能看到你用命令行创建的portfoliodb了。

顺便提下你的配置小问题

你贴的DATABASES配置有语法错误,会导致Django无法正确解析配置:

  • ENGINE字段没写完,应该是'django.db.backends.postgresql';
  • PASSWORD字段缺了冒号;
  • 还有多余的空格和换行问题。

修正后的正确配置应该是:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'portfoliodb',
        'USER': 'postgres',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

内容的提问来源于stack exchange,提问作者Prathamesh Saraf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:34:47