#29808 closed Bug (fixed)
Applied migration detection may fail when using a case-insensitive collation
| Reported by: | Elaci0 | Owned by: | Hasan Ramezani |
|---|---|---|---|
| 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 (9)
comment:1 by , 7 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 |
comment:2 by , 6 years ago
| Has patch: | set |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
comment:3 by , 6 years ago
| Needs tests: | set |
|---|---|
| Patch needs improvement: | set |
| Version: | 2.1 → master |
comment:4 by , 6 years ago
| Needs tests: | unset |
|---|---|
| Patch needs improvement: | unset |
comment:6 by , 6 years ago
| Patch needs improvement: | unset |
|---|
Not sure about the solution.
PR just created for proposing the solution.