Django数据库迁移命令
迁移命令 migrate
python manage.py migrate # 全部项目
python manage.py migrate AppName # 一个项目
执行迁移命令必须确保当前在项目目录下(执行ls命令能看到 manage.py文件), 然后使用 python manage.py migrate 即可。
如果IDE为pycharm也可以在运行/调试配置中创建命令,下方我所有迁移命令均在pycharm中完成。
makemigrations (生成迁移脚本)
makemigrations 是我们多次使用的命令,他会将我们 model.py 中创建的数据库模型生成迁移脚本库,每次只要我们的数据库模型model.py中发生了变化,使用 python manage.py makemigrations 就会在migrations中创建一个记录我们变化的脚本
makemigrations 参数
python manage.py makemigrations # 全部项目
python manage.py makemigrations AppName # 一个项目
默认不带参数的情况下,makemigrations会迁移当前项目中所有APP中的模型,并且生成迁移脚本,并且迁移脚本库名当修改较少时会根据修改内容生成名称,但在数据库做过多修改时会生成一个为当前时间的名称。
makemigrations参数 作用
APP名称 可以填写一个或者多个app名称,那么就只会针对这几个app生成迁移脚本。
--name 名称 给这个迁移脚本指定一个名字。
--empty 生成一个空的迁移脚本。如果你想写自己的迁移脚本,可以使用这个命令来实现一个空的文件,
比如我下面写到
python manage.py makemigrations query --name add_VIP
可以直针对query APP生成迁移脚本,并且脚本名称为add_VIP
migrate (将迁移脚本映射进入数据库)
migrate也是非常常用的命令, 他将我们生成的映射脚本转换成SQL语句在指定的数据库中执行,在数据库中生成或修改表。
migrate参数
默认情况下,migrate会将所以APP中的映射脚本映射进入数据库
migrate参数 作用
APP名称 将一个或多个APP名称下的迁移脚本映射到数据库中。
APP名称 映射脚本 将某个app下指定名字的migration文件夹中的指定映射脚本映射到数据库中。
--fake 可以将指定的迁移脚本名字添加到数据库中。但是并不会把迁移脚本转换为SQL语句,修改数据库中的表。
--fake-initial 将第一次生成的迁移文件版本号记录在数据库中。但并不会真正的执行迁移脚本。
其中--fake与--fake-intial常用于解决迁移版本时报错使用,下方会详细讲解
showmigrations(查看迁移文件)
查看某个app下的迁移文件。如果后面没有app,那么将查看INSTALLED_APPS中所有的迁移文件。(此命令使用较少,大部分现代IDE中都会携带当前项目目录)
sqlmigrate(迁移使用SQL)
查看某个迁移文件在映射到数据库中的时候,转换的SQL语句
python manage.py sqlmigrate APP名 迁移脚本名,比如说下图第四个迁移脚本名为
0004_delete_text
除了写全民外,简写成编号也同样可以查询出来
python manage.py sqlmigrate APP名 迁移脚本编号编号需要完整编号,比如第四个要写成0004,不能是4
链接:https://blog.csdn.net/qq_39611230/article/details/105151677
=======================================
解决方法:
1、删除001_initial文件
2、删除django_migrations表中记录
由于Django自带的一个表django_migrations表中已经将之前生成的表添加进入了
=======================================
python manage.py sqlmigrate UserManage 0001
令具体执行了什么语句
=======================================
https://www.bilibili.com/video/BV1ba411h7Mi/
=======================================
=======================================