Я пишу миграцию django, чтобы изменить max_length в CharField в следующей модели с 200 на 255, но при этом эти поля изменяются с необнуляемых на обнуляемые. Я хочу, чтобы эти поля оставались необнуляемыми.
С sqlmigrate
я вижу sql, который django запускает для каждой миграции:
Определение модели
# -*- coding: utf-8 -*-
from django.db import models
class Account(models.Model):
# Would be added by Django default anyways.
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200)
email = models.EmailField(max_length=200)
password = models.CharField(max_length=200)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
last_seen_at = models.DateTimeField(auto_now_add=True)
project_token = models.CharField(max_length=200)
url = models.URLField(max_length=200)
notification_emails = models.TextField(blank=True)
Начальная миграция 0001
BEGIN;
CREATE TABLE `pnmodels_account` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(200) NOT NULL, `email` varchar(200) NOT NULL, `password` varchar(200) NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, `last_seen_at` datetime NOT NULL, `project_token` varchar(200) NOT NULL, `url` varchar(200) NOT NULL, `notification_emails` longtext NOT NULL);
COMMIT;
Миграция 0002 для обновления max_length до 255
BEGIN;
ALTER TABLE `pnmodels_account` MODIFY `email` varchar(255);
ALTER TABLE `pnmodels_account` MODIFY `name` varchar(255);
ALTER TABLE `pnmodels_account` MODIFY `password` varchar(255);
ALTER TABLE `pnmodels_account` MODIFY `project_token` varchar(255);
ALTER TABLE `pnmodels_account` MODIFY `url` varchar(255);
COMMIT;
Я думаю, что MODIFY
s в 0002 должны включать NOT NULL
. Это ошибка django или я что-то упустил?
Использование: Django==1.7.7, mysqlclient==1.3.6