django迁移脚本

fengzi7314 fengzi7314     2022-12-16     757

关键词:

执行migrate报错的解决办法:

想知道migrate为什么报错,需要先了解migrate到底做了什么事情

migrate做了什么事情?

1.将相关的迁移脚本翻译成sql语句,然后在数据库中执行

2.如果sql语句执行没有问题,那么会将相关的迁移脚本的名字记录到数据库中django_migrations表中

migrate怎么判断哪些迁移脚本需要执行?

migrate会将代码中的迁移脚本和数据库中的迁移脚本做对比,如果发现数据库中没有这个迁移脚本,便会执行

原因

执行migrate报错,是因为django项目中的迁移脚本和数据库里的django_migrations迁移脚本记录不一致导致报错

 

解决办法

使用--fake参数

首先对比数据库中的迁移脚本和代码中的迁移脚本,找到哪个不同,然后使用--fake,将代码中的迁移脚本添加到‘django_migrations‘里,但是不会执行sql语句,这样就避免每次执行migrate的时候重复调用迁移脚本

 

终极解决方案

如果代码中的迁移脚本和数据库中的脚本实在太多,就是搞不清了,那么这个时候可以用终极解决方案

1.将代码中的迁移脚本和数据库中的迁移脚本全部删除

2.确保app中models的字段和数据库中的字段一致

3.使用 python manager.py makemigrations重新生成迁移脚本

4.使用python manager.py migrate --fake-initial将刚刚生成的迁移脚本,标记为已完成(因为这些模型相对应的表,其实在数据库里都已经存在了,不需要重复执行)

 

重新运行 Django 数据迁移

】重新运行Django数据迁移【英文标题】:RerunaDjangodatamigration【发布时间】:2015-11-0409:01:42【问题描述】:如何在Django1.8+上重新运行数据迁移?如果相关,我的迁移编号为0011_my_data_migration.py,是最新的迁移。【问题讨论】:请注... 查看详情

检查挂起的 Django 迁移

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

带有 2 个数据库的 Django 迁移?

】带有2个数据库的Django迁移?【英文标题】:Djangomigrationwith2DBs?【发布时间】:2021-08-3013:29:00【问题描述】:我有数据库db1和db2。应该使用相同的迁移脚本创建两个DB的模式。Django文档提到了DATABASE_ROUTERS和RunPython,但到目前为... 查看详情

带有转储数据和迁移的 Django 备份策略

】带有转储数据和迁移的Django备份策略【英文标题】:Djangobackupstrategywithdumpdataandmigrations【发布时间】:2016-04-2116:36:58【问题描述】:与thisquestion一样,我为我的数据库设置了一个基于dumpdata的备份系统。该设置类似于运行一个... 查看详情

Django 定义过程

】Django定义过程【英文标题】:Djangodefineprocedure【发布时间】:2016-03-0820:51:22【问题描述】:我想在Django中定义一些PostgreSQL存储过程以供以后使用,但我找不到Django的任何支持来实现这一点。我可以通过编写单独的python脚本或SQ... 查看详情

Django DB 迁移添加新列,但不要编辑表中已有的值

】DjangoDB迁移添加新列,但不要编辑表中已有的值【英文标题】:DjangoDBmigrationaddsnewcolumns,butdonoteditthevaluesalreadyinthetable【发布时间】:2021-02-0715:55:43【问题描述】:我有一个用于创建表并指定应添加到其中的值的python脚本。我使... 查看详情

将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是啥?

】将DjangoDB从SQLite迁移到MySQL的最佳方法是啥?【英文标题】:What\'sthebestwaytomigrateaDjangoDBfromSQLitetoMySQL?将DjangoDB从SQLite迁移到MySQL的最佳方法是什么?【发布时间】:2011-03-0308:54:09【问题描述】:我需要将我的数据库从sqlite迁移... 查看详情

django系列12:django模型关系

迁移分两步实现生成迁移文件执行迁移文件迁移文件的生成根据models文件生成对应的迁移文件根据models和已有迁移文件差别生成新的迁移文件执行迁移文件先去迁移记录查找,哪些文件未迁移过app_label+迁移文件名字执行未迁移... 查看详情

Django 的核心迁移工具与 Django 数据迁移的 South

】Django的核心迁移工具与Django数据迁移的South【英文标题】:Django\'sCoreMigrateToolvsSouthforDjangoDataMigrations【发布时间】:2014-01-1203:27:11【问题描述】:我目前没有在我的Django项目中使用迁移,但我打算很快使用。我知道South是事实... 查看详情

南迁移和 django 迁移有啥区别?

】南迁移和django迁移有啥区别?【英文标题】:Whatisthedifferencebetweensouthmigrationsanddjangomigrations?南迁移和django迁移有什么区别?【发布时间】:2019-02-1422:54:24【问题描述】:谁能解释一下南迁移和django迁移之间的区别?一个人比... 查看详情

Django 迁移没有迁移 authtoken 和会话

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

Django 1.7 内置迁移与南迁移?

】Django1.7内置迁移与南迁移?【英文标题】:Django1.7builtinmigrationsvsSouthmigrations?【发布时间】:2014-12-2116:38:45【问题描述】:我已经在问题中检查了这个问题,但找不到任何关于Django构建迁移的简单解释,或者-它们足够可靠吗?... 查看详情

Django 无法迁移内容类型迁移

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

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

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

重置长时间的 Django 迁移

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

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

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

自动伪造 Django 迁移

】自动伪造Django迁移【英文标题】:AutoFakeDjangoMigration【发布时间】:2018-08-1511:22:47【问题描述】:我需要自动伪造Django1.9迁移。是否有一个标志可以放入自动伪造的迁移文件中,而不必登录到多个服务器并运行。迁移布局是这... 查看详情

为还没有任何迁移的 Django 项目创建迁移

】为还没有任何迁移的Django项目创建迁移【英文标题】:CreatingmigrationsforaDjangoprojectthatdoesnothaveanymigrationsalready【发布时间】:2022-01-1002:41:06【问题描述】:我正在为一个有13年历史的Django项目的客户工作。他们在构建项目时没有... 查看详情