Opened 8 years ago

Last modified 8 years ago

#27321 closed Bug

ignores_quoted_identifier_case broken on MySQL on OS X/Windows — at Version 1

Reported by: Adam Johnson Owned by: nobody
Component: Database layer (models, ORM) Version: 1.10
Severity: Normal Keywords: mysql, mariadb
Cc: me@… Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Adam Johnson)

#26781 added the ignores_quoted_identifier_case database feature, which defaults to False, so it's False for the MySQL backend. Unfortunately this can't be determined without reference to the filesystem that the tables are stored on - MySQL and MariaDB rely on the underlying filesystem to provide case sensitivity, as well as a setting, as per https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html and https://mariadb.com/kb/en/mariadb/identifier-case-sensitivity/ .

Thus the added test, test_alter_db_table_case, fails on OS X where the default filesystem is case insensitive, with:

django.db.utils.InternalError: (1050, "Table 'SCHEMA_AUTHOR' already exists")

I can't find any good information on whether PostgreSQL depends on filesystem case sensitive or not. All the results I found in five minutes of Googling seem to relate to whether it's syntactically case sensitive, and suggest it lowercases all table names in queries unless they are double-quoted, which would make renaming a table to uppercase a no-op anyway?

ignores_quoted_identifier_case should be True for MySQL when its data directory is mounted on a case insensitive filesystem. The only way to reliably check this that I can think of would be to try create two tables with names that differ only in case and seeing if the second one failed, which is kind of nasty.

Change History (1)

comment:1 by Adam Johnson, 8 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top