Here is my Django Migration file. When I run
python manage.py makemigrations/migrate
I get this error.
Error:-
django.db.utils.OperationalError: (1050, "Table 'tickets_duration' already exists")
I have dropped the database and running it but still get the same error.
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Duration',
fields=[
('Id', models.UUIDField(primary_key=True, db_column=b'duration_id', default=uuid.uuid4, serialize=False, editable=False)),
('duration', models.CharField(max_length=200, db_column=b'duration')),
],
),
migrations.CreateModel(
name='ErrorCount',
fields=[
('Id', models.UUIDField(primary_key=True, db_column=b'error_id', default=uuid.uuid4, serialize=False, editable=False)),
('error', models.CharField(max_length=200, db_column=b'error')),
],
),
migrations.CreateModel(
name='OutageCaused',
fields=[
('Id', models.UUIDField(primary_key=True, db_column=b'error_id', default=uuid.uuid4, serialize=False, editable=False)),
('outage_caused', models.CharField(max_length=200, db_column=b'outage_caused')),
],
),
migrations.CreateModel(
name='Pg',
fields=[
('Id', models.UUIDField(primary_key=True, db_column=b'pg_id', default=uuid.uuid4, serialize=False, editable=False)),
('pg_cd', models.CharField(max_length=200, db_column=b'pg_cd')),
],
),
migrations.CreateModel(
name='SystemCaused',
fields=[
('Id', models.UUIDField(primary_key=True, db_column=b'error_id', default=uuid.uuid4, serialize=False, editable=False)),
('system_caused', models.CharField(max_length=200, db_column=b'system_caused')),
],
),
migrations.CreateModel(
name='Tickets',
fields=[
('ticket_num', models.CharField(max_length=100, serialize=False, primary_key=True, db_column=b'ticket_id')),
('created_dt', models.DateTimeField(db_column=b'created_dt')),
('ticket_type', models.CharField(max_length=20, db_column=b'ticket_type')),
('addt_notes', models.CharField(max_length=1000, db_column=b'addt_notes')),
('row_create_ts', models.DateTimeField(default=datetime.datetime(2016, 2, 29, 16, 58, 31, 584733))),
('row_end_ts', models.DateTimeField(default=b'9999-12-31 00:00:00.00000-00', db_column=b'row_end_ts')),
('duration', models.ManyToManyField(to='tickets.Duration')),
('error_count', models.ManyToManyField(to='tickets.ErrorCount')),
('outage_caused', models.ManyToManyField(to='tickets.OutageCaused')),
try python manage.py migrate your_app --fake
. This post talks about it. Django South - table already exists .
This question is already answered here
You should run this:
python manage.py migrate <appname> --fake
python manage.py migrate --fake-initial
应该适用于 django 2.2
temporary solution may be to comment the creation of existing table(tickets_duration).
class Migration(migrations.Migration):
dependencies = [
]
operations = [
#migrations.CreateModel(
# name='Duration',
# fields=[
# ('Id', models.UUIDField(primary_key=True, db_column=b'duration_id', default=uuid.uuid4, serialize=False, editable=False)),
# ('duration', models.CharField(max_length=200, db_column=b'duration')),
# ],
#),
....
....
version:-Django 3.X
If above solution doesn't work :
python manage.py migrate <appname> --fake
If it doesn't work then have a look at the migrations folder you will find that there will be some missing changes which u have done in models.py but somehow Django is unable to capture, so find it there and again do some changes (even a small) to that model fields and then use ,
py manage.py makemigrations app_name
py manage.py migrate app_name
or
py manage.py makemigration <appname> --fake
It is an inconsistent situation of Database.
You may do the followings:
It's probably because you're using sqlite3 and table names in sqlite3 are case insensitive . Try running this command and check if there's two tables are created. Root cause is your ManyToMany
field on the Tickets
table.
python manage.py sqlmigrate <APP NAME> <MIGRATION ID>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.