summaryrefslogtreecommitdiff
path: root/django/db/backends/mysql/schema.py
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2019-07-14 01:24:35 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-07-19 11:05:06 +0200
commit1fc2c70f7613e014a31771afa537439b28dd35fb (patch)
treedae8ebfe89e687edb518bd6031d89f9c47f774c9 /django/db/backends/mysql/schema.py
parent7f612eda80db1c1c8e502aced54c2062080eae46 (diff)
downloaddjango-1fc2c70f7613e014a31771afa537439b28dd35fb.tar.gz
Fixed #30593 -- Added support for check constraints on MariaDB 10.2+.
Diffstat (limited to 'django/db/backends/mysql/schema.py')
-rw-r--r--django/db/backends/mysql/schema.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/django/db/backends/mysql/schema.py b/django/db/backends/mysql/schema.py
index 666aa292e8..9b80b9bede 100644
--- a/django/db/backends/mysql/schema.py
+++ b/django/db/backends/mysql/schema.py
@@ -28,9 +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'
def quote_value(self, value):
self.connection.ensure_connection()
+ if isinstance(value, str):
+ value = value.replace('%', '%%')
# MySQLdb escapes to string, PyMySQL to bytes.
quoted = self.connection.connection.escape(value, self.connection.connection.encoders)
if isinstance(value, str) and isinstance(quoted, bytes):