Index: django/db/backends/mysql_old/base.py
===================================================================
--- django/db/backends/mysql_old/base.py	(revision 7297)
+++ django/db/backends/mysql_old/base.py	(working copy)
@@ -133,7 +133,7 @@
     features = DatabaseFeatures()
     ops = DatabaseOperations()
     operators = {
-        'exact': '= %s',
+        'exact': '= BINARY %s',
         'iexact': 'LIKE %s',
         'contains': 'LIKE BINARY %s',
         'icontains': 'LIKE %s',
Index: django/db/backends/mysql/base.py
===================================================================
--- django/db/backends/mysql/base.py	(revision 7297)
+++ django/db/backends/mysql/base.py	(working copy)
@@ -128,7 +128,7 @@
     features = DatabaseFeatures()
     ops = DatabaseOperations()
     operators = {
-        'exact': '= %s',
+        'exact': '= BINARY %s',
         'iexact': 'LIKE %s',
         'contains': 'LIKE BINARY %s',
         'icontains': 'LIKE %s',
Index: tests/regressiontests/string_lookup/models.py
===================================================================
--- tests/regressiontests/string_lookup/models.py	(revision 7297)
+++ tests/regressiontests/string_lookup/models.py	(working copy)
@@ -97,6 +97,12 @@
 >>> Article.objects.get(text__exact='The quick brown fox jumps over the lazy dog.')
 <Article: Article Test>
 
+# Regression tests for #2170: test case sensitiveness
+>>> Article.objects.filter(text__exact='tHe qUick bRown fOx jUmps over tHe lazy dog.')
+[]
+>>> Article.objects.filter(text__iexact='tHe qUick bRown fOx jUmps over tHe lazy dog.')
+[<Article: Article Test>]
+
 >>> Article.objects.get(text__contains='quick brown fox')
 <Article: Article Test>
 
