Django 重建所有迁移

     2023-02-24     302

关键词:

【中文标题】Django 重建所有迁移【英文标题】:Django Rebuild all migrations 【发布时间】:2017-04-10 01:27:00 【问题描述】:

我正在 Django 中构建一个应用程序,它使用实时/使用中的数据库。

基本上,由于 SQL 数据库的应用程序开发经历了一些结构变化,并导致 Django 出现问题,Django 将尝试将迁移应用到已经存在的数据库。例如:

在 Django 应用程序中,我将 email 列标记为唯一,这基于开发数据库很好。但是,主数据库现在总是有一个表更改,将email 列标记为唯一。 Django 正在与已经存在的那个唯一的密钥作斗争。

那么与更新的 SQL 数据库结构相比,是否可以清除所有 Django 迁移并让它再次进行迁移?

【问题讨论】:

您必须选择是否希望 Django 管理您的数据库。如果您想对数据库进行自己的更改并让 Django 之后采用这些更改,而不是 Django 更改数据库本身,请考虑在您的模型中使用 managed = False 【参考方案1】:

如果您的模型与您的数据库非常不同步,最简单的选择可能是使用 inspectdb 从头开始​​重建您的模型。

如果您的模型已经非常接近数据库,那么第一步是确保您的模型与数据库完全匹配。为此,您可以使用 django-extensions 中的 sqldiff。

一旦您的 Django 模型与您的数据库匹配,请按照 this answer 根据现有数据库架构重新创建迁移。

【讨论】:

我的设置的问题不是所有的数据库表都被网站使用,大部分数据库被外部应用程序使用。所以我不能只检查或做一个 sqldiff。我可以删除所有迁移并重新制作连接到更新的数据库结构的迁移吗? @bmazoka 关键是您在数据库中使用的表和应用程序的模型需要相同。一种选择是在本地计算机上获取数据库的副本并删除您不使用的任何表。然后,您可以使用上述步骤创建迁移。 啊,我明白了。但是,如果我删除了所有迁移文件,Django 是否能够重新进行迁移?似乎是更简单的解决方案。如果我让它根据当前结构制作模型,我将丢失我对模型本身所做的所有更改以及我必须做的自定义事情。 删除迁移(例如,使用rm -rf **/migrations)很好,除非有任何自定义迁移。最佳做法是确保迁移是您的 git 存储库的一部分,以便您可以将它们取回以防万一。

Django 迁移未检测到所有更改

】Django迁移未检测到所有更改【英文标题】:Djangomigrationsnotdetectingallchanges【发布时间】:2017-08-2222:47:08【问题描述】:我有以下型号。BaseClass1和BaseClass2是模型使用的抽象模型。在这种情况下,模型AdBreak由视图集和序列化程序... 查看详情

Django 无法迁移内容类型迁移

】Django无法迁移内容类型迁移【英文标题】:Djongofailstomigratecontenttypesmigrations【发布时间】:2021-09-0815:18:11【问题描述】:我在我的项目中使用djongo进行MongoDB连接。我已经清理了所有以前的迁移,删除了sqlite数据库并再次为应... 查看详情

manage.py 迁移时必须是关系 django_site 的所有者

】manage.py迁移时必须是关系django_site的所有者【英文标题】:Mustbeownerofrelationdjango_sitewhenmanage.pymigrate【发布时间】:2016-01-1317:21:28【问题描述】:在长时间搜索关于postgre、manage.pykillorphant、django_site之后,没有什么能帮助我解决... 查看详情

Django 迁移没有迁移 authtoken 和会话

】Django迁移没有迁移authtoken和会话【英文标题】:Djangomigrationdidn\'tmigrateauthtokenandsessions【发布时间】:2019-12-2419:29:57【问题描述】:在运行pythonmanage.pymigrate时,并非所有迁移都运行,特别是django_celery_results、authtoken和sessions。... 查看详情

Django迁移:关系不存在

】Django迁移:关系不存在【英文标题】:Djangomigrations:relationdoesnotexist【发布时间】:2017-07-0106:43:20【问题描述】:我的开发服务器上有一个工作站点和数据库,我正在尝试在实时服务器上进行设置。我正在执行以下操作:Git将... 查看详情

重置长时间的 Django 迁移

】重置长时间的Django迁移【英文标题】:ResetlongDjangomigrations【发布时间】:2016-11-1104:30:28【问题描述】:随着项目的发展,迁移(makemigrations和migrate)都需要越来越长的时间,每次部署都会延迟很多。Django让您转到squashthem,因此... 查看详情

Django:安全删除旧迁移?

】Django:安全删除旧迁移?【英文标题】:Django:SafelyRemoveOldMigrations?【发布时间】:2020-01-1921:04:36【问题描述】:我有一个Django应用程序,其中包含许多过时的迁移。我想删除旧的迁移并重新开始。该应用有14个不同的“迁移”... 查看详情

如何在压缩它们后删除 django 迁移?

】如何在压缩它们后删除django迁移?【英文标题】:Howtodeletedjangomigrationsaftersquashingthem?【发布时间】:2015-08-1810:10:52【问题描述】:Django文档说我们可以在压缩迁移后删除它们:您应该提交此迁移,但保留旧迁移;这新迁移将... 查看详情

在 Django 中处理生产迁移和开发迁移

】在Django中处理生产迁移和开发迁移【英文标题】:HandleProductionMigrationsandDevelopmentMigrationsinDjango【发布时间】:2021-08-3013:27:39【问题描述】:在开发Django项目时,您的所有迁移都存储在每个应用程序文件夹中,但是,在生产中... 查看详情

Heroku 不会在 Django 上迁移模型

】Heroku不会在Django上迁移模型【英文标题】:HerokudoesntmigratemodelsonDjango【发布时间】:2021-11-2912:47:46【问题描述】:我只是将我的Django应用程序部署到Heroku,但我无法将我的迁移迁移到Heroku。首先我运行:herokurunpythonmanage.pymigrat... 查看详情

South/Django:现有条目的架构迁移默认值

】South/Django:现有条目的架构迁移默认值【英文标题】:South/Django:Schemamigrationsdefaultvalueforexistingentries【发布时间】:2014-06-2020:29:06【问题描述】:我想将一个BooleanField添加到现有模型,默认值=False,并且我的表中所有现有的对... 查看详情

检查挂起的 Django 迁移

】检查挂起的Django迁移【英文标题】:CheckforpendingDjangomigrations【发布时间】:2015-10-2814:31:46【问题描述】:在Django中,是否有一种简单的方法可以检查所有数据库迁移是否已运行?我找到了manage.pymigrate--list,它提供了我想要的... 查看详情

Django迁移错误表已经存在

】Django迁移错误表已经存在【英文标题】:Djangomigrationerrortableisalreadyexists【发布时间】:2019-11-1715:18:29【问题描述】:您好,我只有一个名为001_initial的迁移文件.....它包含我执行makemigrations时创建的所有createtable(sql)djangomakemigrat... 查看详情

django迁移问题

...迁移脚本需要执行:他会将代码中的迁移脚本和数据库中django_migrations中的迁移脚本进行对比,如果发现数据库中,没有这个迁移脚本,那么就会执行这个迁移脚本。面试题2:migrate做了什么事情:将相关的迁移脚本翻译成SQL语... 查看详情

在 Django 数据迁移中手动提交

】在Django数据迁移中手动提交【英文标题】:CommitmanuallyinDjangodatamigration【发布时间】:2015-09-2317:10:39【问题描述】:我想编写一个数据迁移,在其中我以较小的批量修改大表中的所有行,以避免锁定问题。但是,我不知道如何... 查看详情

Heroku 不会在 Django 中迁移模型

】Heroku不会在Django中迁移模型【英文标题】:Herokudoesn\'tmigratemodelsinDjango【发布时间】:2021-07-1904:35:45【问题描述】:我在Heroku上部署了一个Django应用程序。我正在尝试使用HerokuPostgres插件将数据库从mySQL切换到Postgres我删除了所... 查看详情

Django - 迁移后未创建表

】Django-迁移后未创建表【英文标题】:Django-Tableisnotcreatingaftermigration【发布时间】:2021-01-2101:00:24【问题描述】:我想在DigitalOcean服务器上使用Postgres数据库为我的Django项目添加新功能。问题是,在本地服务器上一切正常,但在... 查看详情

迁移后django静态文件404错误

】迁移后django静态文件404错误【英文标题】:djangostaticfiles404erroraftermigration【发布时间】:2020-05-0706:07:29【问题描述】:静态文件夹路径正确,迁移前一切正常。index.html%加载静态文件%我的第一个Django应用somthin正文>【参考方... 查看详情