Django 1.8.5迁移根本不会迁移到Postgres数据库

时间:2015-11-09 11:28:25

标签: python django postgresql

我遇到了一个奇怪的问题。我正在创建一个简单的表。初始迁移0001看起来像:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Customer',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('company_name', models.CharField(default=b'', unique=True, max_length=100)),
                ('address1', models.CharField(default=b'', max_length=200)),
                ('address2', models.CharField(default=b'', max_length=200, blank=True)),
                ('city', models.CharField(default=b'', max_length=200)),
                ('state', models.CharField(default=b'', max_length=100)),
                ('pincode', models.IntegerField(default=b'')),
                ('landline', models.CharField(default=b'', max_length=15, blank=True)),
                ('email', models.EmailField(default=b'', max_length=254, blank=True)),
                ('website', models.CharField(default=b'', max_length=100, blank=True)),
                ('contact1_first_name', models.CharField(default=b'', max_length=100)),
                ('contact1_last_name', models.CharField(default=b'', max_length=100)),
                ('contact1_mobile', models.CharField(default=b'', max_length=15, blank=True)),
                ('contact1_email', models.EmailField(default=b'', max_length=254, blank=True)),
                ('contact2_first_name', models.CharField(default=b'', max_length=100, blank=True)),
                ('contact2_last_name', models.CharField(default=b'', max_length=100, blank=True)),
                ('contact2_mobile', models.CharField(default=b'', max_length=15, blank=True)),
                ('contact2_email', models.EmailField(default=b'', max_length=254, blank=True)),
            ],
        ),
    ]

我做了几个版本,我做了迁移,我做了syncdb。我没有错误,绝对没有在postgres sql中创建表。我必须通过执行sqlmigrate并将代码发布到PGADMIN3来手动创建表。这就是诀窍并创造了表格。

然而,使用Django的重点是模型的更改应该迁移到数据库,我不应该单独手动更改模型和数据库。

我在网上搜索过,我没有看到其他人有类似的问题。这是一个非常基本的问题,没有错误,也没有对数据库进行任何更改。问题是什么?

1 个答案:

答案 0 :(得分:1)

当事情不适用于模型并且你想从头开始时,对我有用的是

  1. 对模型进行更改以使其恰到好处。
  2. 删除所有迁移,删除应用中的迁移文件夹
  3. 在数据库中查找迁移表(我使用pgadmin3作为postgres sql的前端)并删除提及您的应用名称的行
  4. 运行makemigrations appname,migrate和syncdb
  5. 你有一个与你的模型完全对应的新数据库,减去所有带有迁移的crud以及你沿途所做的所有小改动,你可能不需要跟踪。