Python Django根据迁移修复现有数据库
我继承了一个django(1.11.6,数据库PostgreSQL)项目,我对它是新手。最近我注意到一些表与由Python Django根据迁移修复现有数据库,python,django,django-migrations,django-database,Python,Django,Django Migrations,Django Database,我继承了一个django(1.11.6,数据库PostgreSQL)项目,我对它是新手。最近我注意到一些表与由manage.py sqlmigrate生成的表不同,例如,manage.py inspectdb返回 class TheClass(models.Model): id = models.IntegerField(primary_key=True) ... 而迁移有: migrations.CreateModel( name='TheClass'
manage.py sqlmigrate
生成的表不同,例如,manage.py inspectdb
返回
class TheClass(models.Model):
id = models.IntegerField(primary_key=True)
...
而迁移有:
migrations.CreateModel(
name='TheClass',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
...
此外,它们有不同的约束名称,等等,列名是正确的。我认为这是不正确的转移的结果。我想根据迁移来修复表,保持数据不变。我尝试使用
sqldiff
,但它没有返回任何差异,我也没有找到答案。你有很多不连贯的地方吗?如果没有,只需稍微更改要更正的字段,运行makemigrations
,然后运行migrate
,这样Django就可以检测到差异,然后再次使用makemigrations
和migrate
返回原始所需的值。希望这能纠正一些不连贯的地方@KrazyMax,谢谢你!嗯,我真正关心的变化是,id
不是串行的,所以我必须将AutoField添加到模型中。其他问题是错误的约束名称等。了解解决此问题的可靠方法将非常有用。但现在,我想我可以试试你建议的方式。