Opened 8 years ago
Last modified 8 years ago
#27321 closed Bug
ignores_quoted_identifier_case broken on MySQL on OS X/Windows — at Initial Version
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
#26781 added test_alter_db_table_case
which presumes that table names are case sensitive. 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 it 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.
This would mean ignores_quoted_identifier_case
should be True
for MySQL with its data directory mounted on a case insensitive filesystem. The only way to reliably check this would be to try create two tables with names that differ only in case and seeing if the second one failed..