From bbfcd9618b06556a0ae2c38456ef38bf3bea9e9d Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sat, 11 Apr 2015 16:10:31 +0200 Subject: [1.8.x] Fixed #24595 -- Prevented loss of null info in MySQL field alteration Thanks Simon Percivall for the report, and Simon Charette and Tim Graham for the reviews. Backport of 02260ea3f6 from master. --- tests/schema/tests.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'tests/schema') diff --git a/tests/schema/tests.py b/tests/schema/tests.py index 2f4a84db09..7027d716b0 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -426,6 +426,22 @@ class SchemaTests(TransactionTestCase): with connection.schema_editor() as editor: editor.alter_field(Note, old_field, new_field, strict=True) + def test_alter_field_keep_null_status(self): + """ + Changing a field type shouldn't affect the not null status. + """ + with connection.schema_editor() as editor: + editor.create_model(Note) + with self.assertRaises(IntegrityError): + Note.objects.create(info=None) + old_field = Note._meta.get_field("info") + new_field = CharField(max_length=50) + new_field.set_attributes_from_name("info") + with connection.schema_editor() as editor: + editor.alter_field(Note, old_field, new_field, strict=True) + with self.assertRaises(IntegrityError): + Note.objects.create(info=None) + def test_alter_null_to_not_null(self): """ #23609 - Tests handling of default values when altering from NULL to NOT NULL. -- cgit v1.3