mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #32832 -- Fixed adding BLOB/TEXT nullable field with default on MySQL 8.0.13+.
Regression in d4ac23bee1.
Thanks Omkar Deshpande for the report.
This commit is contained in:
@@ -3387,6 +3387,33 @@ class SchemaTests(TransactionTestCase):
|
||||
if connection.features.can_introspect_default:
|
||||
self.assertIn(field.default, ['NULL', None])
|
||||
|
||||
def test_add_textfield_default_nullable(self):
|
||||
with connection.schema_editor() as editor:
|
||||
editor.create_model(Author)
|
||||
# Add new nullable TextField with a default.
|
||||
new_field = TextField(blank=True, null=True, default='text')
|
||||
new_field.set_attributes_from_name('description')
|
||||
with connection.schema_editor() as editor:
|
||||
editor.add_field(Author, new_field)
|
||||
Author.objects.create(name='Anonymous1')
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute('SELECT description FROM schema_author;')
|
||||
item = cursor.fetchall()[0]
|
||||
self.assertIsNone(item[0])
|
||||
field = next(
|
||||
f
|
||||
for f in connection.introspection.get_table_description(
|
||||
cursor,
|
||||
'schema_author',
|
||||
)
|
||||
if f.name == 'description'
|
||||
)
|
||||
# Field is still nullable.
|
||||
self.assertTrue(field.null_ok)
|
||||
# The database default is no longer set.
|
||||
if connection.features.can_introspect_default:
|
||||
self.assertIn(field.default, ['NULL', None])
|
||||
|
||||
def test_alter_field_default_dropped(self):
|
||||
# Create the table
|
||||
with connection.schema_editor() as editor:
|
||||
|
||||
Reference in New Issue
Block a user