﻿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	nobody	"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 bee 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.

This affects other '''ALTER TABLE'''-statements too, e.g. if changing field type from''' IntegerField''' to '''BigIntergerField'''. The bug is present in 1.7 as well.
"	Bug	new	Migrations	1.8	Normal				Unreviewed	0	0	0	0	0	0
