summaryrefslogtreecommitdiff
path: root/django/db/backends/mysql/schema.py
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2019-09-04 16:54:27 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-09-05 09:18:34 +0200
commite2c6a0858d7d9ad85eda353076a5b46608b704a9 (patch)
tree6207019300056a7410d39464f362c6502846ce44 /django/db/backends/mysql/schema.py
parentb93d786251513a5da102abc31f275ab3ee2850ed (diff)
downloaddjango-e2c6a0858d7d9ad85eda353076a5b46608b704a9.tar.gz
Fixed #30750 -- Added support for check constraints on MySQL 8.0.16+.
Diffstat (limited to 'django/db/backends/mysql/schema.py')
-rw-r--r--django/db/backends/mysql/schema.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/django/db/backends/mysql/schema.py b/django/db/backends/mysql/schema.py
index d138606791..d379965c27 100644
--- a/django/db/backends/mysql/schema.py
+++ b/django/db/backends/mysql/schema.py
@@ -28,10 +28,15 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
sql_delete_pk = "ALTER TABLE %(table)s DROP PRIMARY KEY"
sql_create_index = 'CREATE INDEX %(name)s ON %(table)s (%(columns)s)%(extra)s'
- # The name of the column check constraint is the same as the field name on
- # MariaDB. Adding IF EXISTS clause prevents migrations crash. Constraint is
- # removed during a "MODIFY" column statement.
- sql_delete_check = 'ALTER TABLE %(table)s DROP CONSTRAINT IF EXISTS %(name)s'
+
+ @property
+ def sql_delete_check(self):
+ if self.connection.mysql_is_mariadb:
+ # The name of the column check constraint is the same as the field
+ # name on MariaDB. Adding IF EXISTS clause prevents migrations
+ # crash. Constraint is removed during a "MODIFY" column statement.
+ return 'ALTER TABLE %(table)s DROP CONSTRAINT IF EXISTS %(name)s'
+ return 'ALTER TABLE %(table)s DROP CHECK %(name)s'
def quote_value(self, value):
self.connection.ensure_connection()