Opened 6 years ago
Last modified 5 years ago
#29808 closed Bug
Applied migration detection may fail when using a case-insensitive collation — at Version 1
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 (last modified by )
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 django/db/migrations/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 insensitive, while MySql is running with the ' --lower-case-table-names=0
' option
Change History (1)
comment:1 by , 6 years ago
Description: | modified (diff) |
---|---|
Summary: | column checks inside "executor.py" is not case sensitive → Applied migration detection may fail when using a case-insensitive collation |
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → Bug |