diff options
author | Hasan Ramezani <hasan.r67@gmail.com> | 2019-05-11 17:29:24 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-05-21 14:15:43 +0200 |
commit | 1378d665a1c85897d951f2ca9618b848fdbba2e7 (patch) | |
tree | 8f59c9a41828ec5ae7f9fe8ff0f565aaa76e9ed6 /tests | |
parent | 519016e5f25d7c0a040015724f9920581551cab0 (diff) | |
download | django-1378d665a1c85897d951f2ca9618b848fdbba2e7.tar.gz |
Fixed #28816 -- Prevented silencing data loss when decreasing CharField.max_length on PostgreSQL.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/schema/tests.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py index 0533b32859..64a1512a53 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -21,6 +21,7 @@ from django.db.models.fields.related import ( ) from django.db.models.indexes import Index from django.db.transaction import TransactionManagementError, atomic +from django.db.utils import DataError from django.test import ( TransactionTestCase, skipIfDBFeature, skipUnlessDBFeature, ) @@ -803,6 +804,21 @@ class SchemaTests(TransactionTestCase): with connection.schema_editor() as editor: editor.alter_field(Author, old_field, new_field, strict=True) + @unittest.skipUnless(connection.vendor == 'postgresql', 'PostgreSQL specific') + def test_alter_char_field_decrease_length(self): + # Create the table. + with connection.schema_editor() as editor: + editor.create_model(Author) + Author.objects.create(name='x' * 255) + # Change max_length of CharField. + old_field = Author._meta.get_field('name') + new_field = CharField(max_length=254) + new_field.set_attributes_from_name('name') + with connection.schema_editor() as editor: + msg = 'value too long for type character varying(254)' + with self.assertRaisesMessage(DataError, msg): + editor.alter_field(Author, old_field, new_field, strict=True) + def test_alter_textfield_to_null(self): """ #24307 - Should skip an alter statement on databases with |