Django makemigrations 不创建管理数据库

Posted

技术标签:

【中文标题】Django makemigrations 不创建管理数据库【英文标题】:Django makemigrations does not create admin databases 【发布时间】:2021-10-11 21:05:51 【问题描述】:

我有一个 django 项目,这是 settings.py 中已安装的应用程序条目:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'crawler',
]

当我运行python manage.py migrate 时,一切似乎都很好。但是当我尝试登录 django 管理页面时,它说

(1146,“表 'stock_db.django_session' 不存在”)

在我看来migrate 没有创建 django 管理数据库,但为什么呢? 我什至尝试删除数据库,再次创建它并运行python manage.py makemigrationspython manage.py migrate,它没有创建 django_session 表。

【问题讨论】:

你在migrate之前做过python manage.py makemigrations吗? @Ram 是的,我做到了。 没有 Django 提供的 stock_db 应用程序,您的错误涉及表 stock_db.django_session 不存在。鉴于您的INSTALLED_APPS 中没有stock_db 应用程序,因此该错误不足为奇... @AbdulAzizBarkat stock_db 是数据库的名称。 看看这个***.com/questions/10515808/… 【参考方案1】:

如果没有帮助继续阅读,请先尝试 makemigrations

此类问题可能出现在许多情况下,最常见的一种是您的迁移文件系统已损坏。原因可能是您尝试编辑迁移文件,或者您删除了其中一些文件,或者如果您在大型团队中工作,则可能存在冲突的迁移。修复迁移系统需要花费大量时间和精力,而且您应该知道它们是如何工作的。如果项目不在生产中而您只是在玩,我建议清除 db 并删除迁移文件并运行 makemigrations 并再次迁移。 还要注意您是否有多个应用程序的模型通过外键或其他方式相互引用。

【讨论】:

如何删除django admin app的迁移? 管理应用程序的迁移驻留在 python 包目录中。但我不建议删除迁移,只需删除您创建的应用程序的迁移 这个错误来自 db 而不是 django stock_db 是你的模式,而 django_session 是一个表。它说您的数据库架构“stock_db”中没有表 django_session,查看您在 django 项目中提供的搜索路径,并查看您的数据库【参考方案2】:

始终确保在 migrate

之前运行 ma​​kemigrations

首先使用以下命令运行您的迁移:

python manage.py makemigrations appname

python manage.py migrate

如果这不起作用,请使用 Python manage.py squashmigrations 删除您当前的迁移,然后重新运行迁移命令

【讨论】:

django admin 的 appname 是什么? 你试过了吗-python manage.py makemigrations admin 上面写着no changes detected in app admin 我什至尝试删除数据库并重新创建它,但也没有用。

以上是关于Django makemigrations 不创建管理数据库的主要内容,如果未能解决你的问题,请参考以下文章

Django Migration (makemigrations) 应该与创建模型分开提交吗?

Django 1.7 - makemigrations 为非托管模型创建迁移

Django Migrations:使用 makemigrations 创建相同的迁移

django makemigrations

Django:啥时候运行makemigrations?

Django 使用数组字段在 makemigrations 上引发应用程序未加载错误