7

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')),
Risadinha
  • 14,638
  • 2
  • 78
  • 87
user1050619
  • 18,448
  • 72
  • 220
  • 371

6 Answers6

13

try python manage.py migrate your_app --fake. This post talks about it. Django South - table already exists.

Community
  • 1
  • 1
bhzag
  • 2,814
  • 7
  • 21
  • 38
5

python manage.py migrate --fake-initial should work for django 2.2

LoneCuriousWolf
  • 540
  • 1
  • 4
  • 12
4

This question is already answered here

You should run this:

python manage.py migrate <appname> --fake

pyjavo
  • 1,471
  • 2
  • 23
  • 36
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')),
        #    ],
        #),
        ....
        ....
SuperNova
  • 21,204
  • 6
  • 80
  • 55
1

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

Saikat Mukherjee
  • 462
  • 3
  • 11
0

It is an inconsistent situation of Database.

You may do the followings:

  1. Comment out the code for your last added model.
  2. Run makemigrations and then migrate --fake, to get the record sync at present situation.
  3. Now, uncomment your last added model, and run makemigrations again;