【问题标题】:Django Table already existDjango 表已经存在
【发布时间】:2016-06-12 19:50:20
【问题描述】:

这是我的 Django 迁移文件。 当我跑步时

python manage.py makemigrations/migrate 

我收到此错误。

Error:-

    django.db.utils.OperationalError: (1050, "Table 'tickets_duration' already exists")

我已删除数据库并运行它,但仍然出现相同的错误。

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')),

【问题讨论】:

  • 只是为了确保:即使您在 empty 数据库上运行 manage.py migrate 也会收到此错误?

标签: python django django-migrations


【解决方案1】:

版本:-Django 3.X

如果上述解决方案不起作用:

python manage.py migrate <appname> --fake

如果它不起作用,请查看迁移文件夹,您会发现您在 models.py 中完成了一些丢失的更改,但不知何故 Django 无法捕获,所以在那里找到它并再次执行对该模型字段进行一些更改(甚至是很小的更改),然后使用,

py manage.py makemigrations app_name
py manage.py migrate app_name
or
py manage.py makemigration <appname> --fake

【讨论】:

    【解决方案2】:

    python manage.py migrate --fake-initial 应该适用于 django 2.2

    【讨论】:

      【解决方案3】:

      这个问题已经回答here

      你应该运行这个:

      python manage.py migrate &lt;appname&gt; --fake

      【讨论】:

        【解决方案4】:

        临时解决方案可能是评论现有表的创建(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')),
                #    ],
                #),
                ....
                ....
        

        【讨论】:

        • 这个名为 MIgration 的类文件在哪里?
        【解决方案5】:

        试试python manage.py migrate your_app --fake。这篇文章谈到了它。 Django South - table already exists.

        【讨论】:

          猜你喜欢
          • 2011-03-06
          • 1970-01-01
          • 2012-03-11
          • 2019-11-17
          • 2011-06-20
          • 2018-07-31
          • 1970-01-01
          • 2012-08-07
          • 2013-05-10
          相关资源
          最近更新 更多