mirror of https://github.com/django/django.git
Fixed #35162 -- Fixed crash when adding fields with db_default on MySQL.
MySQL doesn't allow literal DEFAULT values to be used for BLOB, TEXT,
GEOMETRY or JSON columns and requires expression to be used instead.
Regression in 7414704e88
.
This commit is contained in:
parent
0630ca5725
commit
dfc77637ea
|
@ -412,7 +412,11 @@ class BaseDatabaseSchemaEditor:
|
|||
"""Return the sql and params for the field's database default."""
|
||||
from django.db.models.expressions import Value
|
||||
|
||||
sql = "%s" if isinstance(field.db_default, Value) else "(%s)"
|
||||
sql = (
|
||||
self._column_default_sql(field)
|
||||
if isinstance(field.db_default, Value)
|
||||
else "(%s)"
|
||||
)
|
||||
query = Query(model=field.model)
|
||||
compiler = query.get_compiler(connection=self.connection)
|
||||
default_sql, params = compiler.compile(field.db_default)
|
||||
|
|
|
@ -32,3 +32,7 @@ Bugfixes
|
|||
* Fixed a regression in Django 5.0 that caused the ``request_finished`` signal to
|
||||
sometimes not be fired when running Django through an ASGI server, resulting
|
||||
in potential resource leaks (:ticket:`35059`).
|
||||
|
||||
* Fixed a bug in Django 5.0 that caused a migration crash on MySQL when adding
|
||||
a ``BinaryField``, ``TextField``, ``JSONField``, or ``GeometryField`` with a
|
||||
``db_default`` (:ticket:`35162`).
|
||||
|
|
|
@ -2303,6 +2303,19 @@ class SchemaTests(TransactionTestCase):
|
|||
columns = self.column_classes(Author)
|
||||
self.assertEqual(columns["birth_year"][1].default, "1988")
|
||||
|
||||
@isolate_apps("schema")
|
||||
def test_add_text_field_with_db_default(self):
|
||||
class Author(Model):
|
||||
description = TextField(db_default="(missing)")
|
||||
|
||||
class Meta:
|
||||
app_label = "schema"
|
||||
|
||||
with connection.schema_editor() as editor:
|
||||
editor.create_model(Author)
|
||||
columns = self.column_classes(Author)
|
||||
self.assertIn("(missing)", columns["description"][1].default)
|
||||
|
||||
@skipUnlessDBFeature(
|
||||
"supports_column_check_constraints", "can_introspect_check_constraints"
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue