Opened 6 years ago
Last modified 5 years ago
#29808 closed Bug
column checks inside "executor.py" is not case sensitive — at Initial Version
Reported by: | Elaci0 | Owned by: | nobody |
---|---|---|---|
Component: | Migrations | Version: | dev |
Severity: | Normal | Keywords: | migration fake-initial case sensitive |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Hello,
I'm using this guide https://datascience.blog.wzb.eu/2017/03/21/using-django-with-an-existinglegacy-database for my studies with camelCasing together with Django (yes, I'm still trying to keep the naming convention we have inside our DB, also for the model's names)
Now, I'm really new to Django and I don't know if it's intended but this part of code inside "executor.py"' is doing case sensitive comparison to check if a column is already present in a database
column_names = [ column.name for column in self.connection.introspection.get_table_description(self.connection.cursor(), table) ] if field.column not in column_names: return False, project_state
so if my migration file contains something like this
migrations.AddField( model_name='city', name='countrycode', field=models.ForeignKey(db_column='countryCode', on_delete=django.db.models.deletion.CASCADE, to='my_DB.country'),
and I run python3 manage.py migrate --database my_DB --fake-initial my_first_app
it fires an error saying that that table already exists
django.db.utils.OperationalError: (1050, "Table 'city' already exists")
If I run python3 manage.py migrate --database my_DB --fake my_first_app it correctly fakes my_first_app
The my_DB collation is case insenstive, while mysql is running with the " --lower-case-table-names=0" option