Ticket #8102: 8102.diff

File 8102.diff, 1017 bytes (added by kmtracey, 7 years ago)

Use COLLATE UTF8_BIN not BINARY to force case-sensitive comparisons on MySQL

  • django/db/backends/mysql/base.py

     
    145145    features = DatabaseFeatures()
    146146    ops = DatabaseOperations()
    147147    operators = {
    148         'exact': '= BINARY %s',
     148        'exact': '= %s COLLATE UTF8_BIN',
    149149        'iexact': 'LIKE %s',
    150         'contains': 'LIKE BINARY %s',
     150        'contains': 'LIKE %s COLLATE UTF8_BIN',
    151151        'icontains': 'LIKE %s',
    152         'regex': 'REGEXP BINARY %s',
     152        'regex': 'REGEXP %s COLLATE UTF8_BIN',
    153153        'iregex': 'REGEXP %s',
    154154        'gt': '> %s',
    155155        'gte': '>= %s',
    156156        'lt': '< %s',
    157157        'lte': '<= %s',
    158         'startswith': 'LIKE BINARY %s',
    159         'endswith': 'LIKE BINARY %s',
     158        'startswith': 'LIKE %s COLLATE UTF8_BIN',
     159        'endswith': 'LIKE %s COLLATE UTF8_BIN',
    160160        'istartswith': 'LIKE %s',
    161161        'iendswith': 'LIKE %s',
    162162    }
Back to Top