Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将django postgres数据库移动到新服务器会导致迁移历史不一致_Python_Django_Postgresql - Fatal编程技术网

Python 将django postgres数据库移动到新服务器会导致迁移历史不一致

Python 将django postgres数据库移动到新服务器会导致迁移历史不一致,python,django,postgresql,Python,Django,Postgresql,我有一个PostgreSQL数据库的数据库转储文件,它是由pg\u dump创建的 我将此文件传输到新服务器。我还将所有相关的models.py文件传输到此服务器。我使用以下命令加载新服务器上的所有数据 gunzip -c dump_file | psql -p port db_name db_user 我将Django配置为访问此数据库,并且可以使用manage.py shell\u plus查询数据。对于eaxmple,我可以运行Images.objects.all().count(),它

我有一个PostgreSQL数据库的数据库转储文件,它是由
pg\u dump
创建的

我将此文件传输到新服务器。我还将所有相关的
models.py
文件传输到此服务器。我使用以下命令加载新服务器上的所有数据

gunzip -c dump_file | psql -p port db_name db_user
我将Django配置为访问此数据库,并且可以使用
manage.py shell\u plus
查询数据。对于eaxmple,我可以运行
Images.objects.all().count()
,它返回正确的数字,即旧服务器上存在的相同数量的图像对象

考虑到这是另一台服务器,它不包含任何原始迁移文件。 我使用
/manage.py makemigrations
创建迁移文件。这似乎工作正常,并且为我安装的每个应用程序创建了迁移文件

接下来,我运行
/manage.py migrate
。这会导致以下错误:

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration shapes.0001_initial is applied before its dependency bsdfs.0002_auto_20200527_1647 on database 'default'.
所有的答案都是简单地从
installed_apps
列表中取消注释
shapes
,但是这不起作用,因为当我在
models.py中导入它时,这会导致以下错误。
模型非常大,并且取消注释使用
shapes
的每个实例是不可能的

运行时错误:模型类shapes.models.Material未声明明确的应用程序标签,并且不在已安装的应用程序中


如何正确迁移数据库?

我想您没有对旧数据库进行任何迁移。
我假设pg_dump包含所有表链接信息

在这种情况下,在运行
makemigrations
之后,您可以尝试创建一个名为
django_migrations
的表,并手动插入一行,告诉django“初始迁移”已经运行(因为您的数据库与代码同步)。 当您运行
migrate
时,它应该说,没有什么可迁移的。
如果以后您更改了模型,新的迁移应该是兼容的,因为您的db现在与您的代码同步

如果您的应用程序为“contenttypes”,迁移文件名为“0001_initial.py”,则只需为应用列设置一些过去日期


您好,我确实没有任何旧的迁移。这种方法听起来很有希望。你能详细说明一下:如何/在哪里创建这个新表吗?通过
psql
?这一行应该是什么?嗨,当然,用截图更新了我的答案。您可以在postgres数据库中创建表。(通常有auth_用户表、django_会话等)