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

误删django_admin_log表导致Django Admin无法使用的技术求助

修复误删django_admin_log表导致的Django Admin无法使用问题

嘿,我之前也踩过类似的坑——你把Django Admin核心的操作日志表django_admin_log删掉了,这就难怪后台会抛出ProgrammingError: relation "django_admin_log" does not exist的错误了。别慌,咱们一步步把它恢复回来:

步骤1:确认迁移状态

首先得看看Django的迁移记录里,admin模块的初始迁移是不是还标记为已应用。执行这条命令:

python manage.py showmigrations admin

如果输出里0001_initial前面有个[X],说明迁移记录还在,但对应的表已经被你删掉了,这时候直接migrate不会重新创建表。

步骤2:重建django_admin_log表

这里有两种靠谱的方法,选一种就行:

方法一:直接执行SQL创建表

你已经用sqlmigrate看到了创建表的SQL,直接把它跑进数据库就行:

  1. 重新执行命令,把完整的SQL输出复制下来:
    python manage.py sqlmigrate admin 0001
    
    要复制从BEGIN;到COMMIT;的全部内容。
  2. 进入你的数据库命令行(比如你用的PostgreSQL,就执行psql db1),把复制的SQL粘贴进去执行,回车后表就重建好了。

方法二:通过迁移命令重新应用

如果不想手动跑SQL,可以让Django帮你重新执行迁移:

  1. 先把admin模块的迁移记录标记为未应用(--fake参数不会真的修改数据库,只是改迁移状态):
    python manage.py migrate --fake admin zero
    
  2. 然后重新应用admin模块的所有迁移:
    python manage.py migrate admin
    
    这时候Django就会自动创建django_admin_log表了。

步骤3:验证修复

启动开发服务器:

python manage.py runserver

然后访问你的Admin后台,应该就能正常使用了。

注意:如果是生产环境操作,一定要先备份数据库,避免出现意外!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:48:32