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

Django SimpleJWT令牌黑名单迁移问题:表不存在错误求助

解决Django SimpleJWT令牌黑名单表不存在的问题

问题根源

误执行python manage.py migrate --fake后,Django的django_migrations迁移记录表已标记token_blacklist的迁移完成,但实际数据库中并未创建对应的token_blacklist_outstandingtoken和token_blacklist_blacklistedtoken表。后续回滚迁移时,因目标表不存在导致反向迁移失败;而常规的migrate/makemigrations命令会认为迁移已完成,不会触发表创建操作。

解决方案

步骤1:清理错误的迁移记录

手动删除django_migrations表中属于token_blacklist的所有条目,让Django重新识别该应用的迁移状态:

方式A:直接执行SQL(MySQL)

  1. 连接项目数据库:
    mysql -u 用户名 -p 数据库名
    
  2. 删除对应迁移记录:
    DELETE FROM django_migrations WHERE app = 'token_blacklist';
    
  3. 退出数据库:exit;

方式B:通过Django Shell操作

  1. 进入Django Shell:
    python manage.py shell
    
  2. 执行清理代码:
    from django.db.migrations.recorder import MigrationRecorder
    MigrationRecorder.Migration.objects.filter(app='token_blacklist').delete()
    exit()
    

步骤2:重新应用token_blacklist迁移

确认rest_framework_simplejwt.token_blacklist已添加到settings.py的INSTALLED_APPS中,执行命令重新创建表:

python manage.py migrate token_blacklist

验证

执行完迁移后,尝试生成令牌或使用黑名单功能,确认不再出现表不存在的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:13:15