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

Django迁移后PgAdmin中PostgreSQL表不显示问题求助

问题排查与解决方案

核心问题:Django未配置PostgreSQL数据库连接

你的settings.py中仅加载了DATABASE_URL环境变量,但未将其映射到Django核心的DATABASES配置字典,导致Django默认使用内置的SQLite数据库执行迁移操作——这就是为什么migrate命令无报错,但PostgreSQL中看不到表的根本原因。

步骤1:修复settings.py的数据库配置

在settings.py文件末尾添加以下代码,将DATABASE_URL解析为Django可用的数据库配置:

# 补充数据库配置
DATABASES = {
    "default": dj_database_url.parse(GENERAL_SETTINGS.DATABASE_URL)
}

步骤2:验证数据库连接正确性

执行以下命令,查看Django当前连接的数据库结构:

docker-compose run app python manage.py inspectdb

如果输出内容包含SQLite相关的表结构(如sqlite_sequence),说明之前确实使用了默认数据库;修改配置后重新执行该命令,应显示PostgreSQL的系统表(如pg_stat_activity)。

步骤3:重新执行迁移操作

  1. 停止并清理现有容器与数据卷(注意:此操作会清空PostgreSQL数据,若需保留数据可跳过-v参数):
docker-compose down -v
  1. 重新构建并启动服务:
docker-compose build
docker-compose up -d db
  1. 等待PostgreSQL容器启动完成后,执行迁移:
docker-compose run app python manage.py makemigrations
docker-compose run app python manage.py migrate

额外排查点

  • 检查PgAdmin连接目标:确认PgAdmin连接的是容器映射的本地端口5432,而非本地安装的PostgreSQL服务(若本地有PostgreSQL,建议先停止它避免端口冲突);同时验证连接的数据库名称、用户名、密码与配置完全一致。
  • 完善PostgreSQL容器的健康检查:你的docker-compose.yml中db服务未定义健康检查规则,导致depends_on的service_healthy条件无法生效。可在db服务中添加以下配置,确保应用仅在数据库就绪后连接:
healthcheck:
  test: ["CMD-SHELL", "pg_isready -U postgres -d ikenga_db"]
  interval: 5s
  timeout: 5s
  retries: 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:53:16