django数据库迁移的小思考

django作为web服务器框架快速开发的操作,一直是我喜爱的,最近在思考django数据库迁移的创建表的问题,记录一下。

python manage.py makemigrations 操作究竟完成了什么?

# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-12-08 05:47
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('a', '0001_initial'),
        ('b', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='a',
            name='b',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='a.A', verbose_name='\u8ba2\u5355\u8bb0\u5f55'),
        ),
        migrations.RemoveField(
            model_name='a',
            name='b',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='a.A', verbose_name='\u8ba2\u5355\u8bb0\u5f55'),
        ),
        
       
    ]

migrations  AddField 添加字段 removeField删除 等操作 修改什么的不说了

这一步操作 两个步骤

第一步  对当前的字段进行djano正确格式的校验

第二步 会在数据库的django_migrations的表中生成一个当前迁移文件的引用

python manage.py migrate 

django生成操作数据库的语句进行直接操作数据库

这个时候皆大欢喜 就一切很好  但是如果 出现问题的话 就尴尬了

因为数据库操作的时候 生成数据库操作语言是逐条生成的 这就造成一个问题,如果 出现一个字段类型的错误 ,它仍会生成这个字段 那么再下次migrate的时候就会报错,而且总是报错。正确的操作是,在数据库中删除当前字段,然后 用新的迁移文件进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值