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

Django项目从SQLite3迁移至PostgreSQL后Admin面板报错求助

Django切换PostgreSQL后Admin访问报错排查方案

1. 确认PostgreSQL依赖安装

  • 开发环境优先安装psycopg2-binary(无需额外编译依赖):
    pip install psycopg2-binary
    
  • 若用psycopg2,需提前安装系统级PostgreSQL开发库(如Ubuntu的libpq-dev、CentOS的postgresql-devel)。

2. 检查settings.py数据库配置

确保配置参数完全匹配你的PostgreSQL环境,示例配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '你的数据库名',  # 需手动在PostgreSQL中创建
        'USER': 'PostgreSQL用户名',
        'PASSWORD': '用户密码',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}
  • 注意:Django不会自动创建PostgreSQL数据库,必须手动建库;
  • 可先用postgres超级用户测试,排除权限不足问题。

3. 重建数据库与迁移

  • 手动创建数据库(通过psql命令行):
    psql -U postgres
    CREATE DATABASE 你的数据库名;
    
  • 清理残留迁移文件,重新执行迁移:
    1. 删除所有app下migrations文件夹内的文件(保留__init__.py);
    2. 执行强制同步命令(适合无旧数据场景):
      python manage.py makemigrations
      python manage.py migrate --run-syncdb
      
  • 重新创建超级用户:
    python manage.py createsuperuser
    

4. 验证Admin核心表是否存在

进入PostgreSQL命令行,检查Admin相关表是否生成:

psql -U 你的用户名 -d 你的数据库名
\dt  # 列出所有表

需确认django_admin_log、auth_user、django_content_type等核心表存在,若缺失则说明迁移未完全执行。

5. 统一数据库编码与时区

  • 创建数据库时指定UTF8编码:
    CREATE DATABASE 你的数据库名 ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8';
    
  • Django settings中保持时区一致:
    TIME_ZONE = 'Asia/Shanghai'  # 替换为你的实际时区
    USE_TZ = True
    

6. 清除缓存并重启服务

  • 清除Django缓存:
    python manage.py clearcache
    
  • 重启开发服务器:
    python manage.py runserver
    

内容的提问来源于stack exchange,提问作者Syed Shehab Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:36:23