I've changed my models an then I tried to migrate them, but got this error:
python manage.py migrate
Operations to perform:
Apply all migrations: admin, contenttypes, auth, sessions, myapp
Running migrations:
Rendering model states... DONE
Applying myapp.0002_auto_20160315_1544...Traceback (most recent call last):
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/backends/mysql/base.py", line 112, in execute
return self.cursor.execute(query, args)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 226, in execute
self.errorhandler(self, exc, value)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorvalue
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 217, in execute
res = self._query(query)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 378, in _query
rowcount = self._do_query(q)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 341, in _do_query
db.query(q)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
_mysql_exceptions.OperationalError: (1060, "Duplicate column name 'short_description_eng'")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/core/management/commands/migrate.py", line 200, in handle
executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/migrations/executor.py", line 92, in migrate
self._migrate_all_forwards(plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/migrations/executor.py", line 121, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/migrations/executor.py", line 198, in apply_migration
state = migration.apply(state, schema_editor)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/migrations/migration.py", line 123, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/migrations/operations/fields.py", line 62, in database_forwards
field,
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/backends/mysql/schema.py", line 50, in add_field
super(DatabaseSchemaEditor, self).add_field(model, field)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/backends/base/schema.py", line 396, in add_field
self.execute(sql, params)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/backends/base/schema.py", line 110, in execute
cursor.execute(sql, params)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/utils.py", line 95, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/django/db/backends/mysql/base.py", line 112, in execute
return self.cursor.execute(query, args)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 226, in execute
self.errorhandler(self, exc, value)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorvalue
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 217, in execute
res = self._query(query)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 378, in _query
rowcount = self._do_query(q)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 341, in _do_query
db.query(q)
File "/home/bootuz/final/myvenv/lib/python3.4/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1060, "Duplicate column name 'short_description_eng'")
This is my models:
class Words(models.Model):
title = models.CharField(max_length=100, unique=True, verbose_name='Слово')
audio = models.FileField(upload_to='audio', blank=True, verbose_name='Озвучка')
short_description_rus = models.CharField(max_length=100, default='', blank=True, verbose_name='Условное обозначение Рус')
russian = models.TextField(default='', blank=True, verbose_name='Русский')
short_description_eng = models.CharField(max_length=110, default='', blank=True, verbose_name='Условное обозначение Eng')
english = models.TextField(default='', blank=True, verbose_name='English')
short_description_tur = models.CharField(max_length=100, default='', blank=True, verbose_name='Условное обозначение Tür')
turkish = models.TextField(default='', blank=True, verbose_name='Türkçe')
Whats wrong?
Migration file
# -*- coding: utf-8 -*-
# Generated by Django 1.9.2 on 2016-03-15 15:44
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('myapp', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='words',
name='short_description_eng',
field=models.CharField(blank=True, default='', max_length=100, verbose_name='Условное обозначение Eng'),
),
migrations.AddField(
model_name='words',
name='short_description_rus',
field=models.CharField(blank=True, default='', max_length=100, verbose_name='Условное обозначение Рус'),
),
migrations.AddField(
model_name='words',
name='short_description_tur',
field=models.CharField(blank=True, default='', max_length=100, verbose_name='Условное обозначение Tür'),
),
migrations.AlterField(
model_name='words',
name='audio',
field=models.FileField(blank=True, upload_to='audio', verbose_name='Озвучка'),
),
migrations.AlterField(
model_name='words',
name='english',
field=models.TextField(blank=True, default='', verbose_name='English'),
),
migrations.AlterField(
model_name='words',
name='russian',
field=models.TextField(blank=True, default='', verbose_name='Русский'),
),
migrations.AlterField(
model_name='words',
name='title',
field=models.CharField(max_length=100, unique=True, verbose_name='Слово'),
),
migrations.AlterField(
model_name='words',
name='turkish',
field=models.TextField(blank=True, default='', verbose_name='Türkçe'),
),
]
To avoid this error, you should define the table when inserting the column name in the SQL statement. Example: We have table departments and dept_emp with the same column name dept_no .
Index objects are not required to be unique; you can have duplicate row or column labels.
You can just add the new column to the table as nullable, either with SQL Server Management Studio by right clicking on the Table and clicking "Design" or by using an ALTER TABLE statement like this ALTER TABLE TableName ADD NewColumnName DataType NULL .
It records inaccurate data and is also unable to fetch the correct data from the database. To remove the duplicate columns we use the DISTINCT operator in the SELECT statement as follows: Syntax: SELECT DISTINCT column1, column2, ...
I had the same issue. Basically, the reason is because the migration thinks the database has those columns but the DB actually does not, so you need a procedure to delete those non-existent columns from migration records.
1.Comment those columns in your code.
2.Reset migrations.
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
3.Do normal initial migration.
python manage.py makemigrations
python manage.py migrate
4.In your code, uncomment those duplicate columns.
python manage.py makemigrations
python manage.py migrate --fake
5.Now your migrations and code are on same page. I use fake to let migration believe DB has those column, but indeed DB does not.
6.In your code, comment those duplicate column again.
python manage.py makemigrations
python manage.py migrate
7.Here, you successfully delete those column records from migrations. And also in your code, those column are commented. They are on the same page.
8.Uncomment those columns again in your code and do migrations.
python manage.py makemigrations
python manage.py migrate
9.It should then work.
This is the only way that worked for my situation. I hope others can provide an easier approach.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With