﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
24817	Renaming a model field that has null=False makes it nullable in MySQL	murfi	Andriy Sokolovskiy	"Steps to reproduce:

1. Create a simple model:
{{{
class TestModel(models.Model):
        value_a = models.IntegerField(null=False)
}}}
2. '''./manage.py makemigrations'''
3. '''./manage.py migrate'''
4. So far so good:
{{{
mysql> describe testy_testmodel;
+---------+---------+------+-----+---------+----------------+
| Field   | Type    | Null | Key | Default | Extra          |
+---------+---------+------+-----+---------+----------------+
| id      | int(11) | NO   | PRI | NULL    | auto_increment |
| value_a | int(11) | NO   |     | NULL    |                |
+---------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
}}}
5. Change model field name '''value_a''' -> '''value_b''':
{{{
class TestModel(models.model):
        value_b = models.IntegerField(null=False)
}}}
6. '''./manage.py makemigrations'''
7. '''./manage.py migrate'''
8. '''NOT NULL''' for '''value_b''' has been lost:
{{{
mysql> describe testy_testmodel;
+---------+---------+------+-----+---------+----------------+
| Field   | Type    | Null | Key | Default | Extra          |
+---------+---------+------+-----+---------+----------------+
| id      | int(11) | NO   | PRI | NULL    | auto_increment |
| value_b | int(11) | YES  |     | NULL    |                |
+---------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
}}}

The '''ALTER-'''statement django produces is 
{{{
ALTER TABLE `testy_testmodel` CHANGE `value_a` `value_b` integer;
}}}
...and it should contain the '''NOT NULL''', but it doesn't.


'''Edit''': Similar bug when changing field type was fixed in #24595. The bug is still present in 1.8.1 when renaming a field.
"	Bug	closed	Migrations	1.8	Release blocker	fixed		alasdair@… me@…	Ready for checkin	1	0	0	0	0	0
