Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
PostgreSQL+Django+South的第一步_Django_Postgresql_Migration_Django South_Geodjango - Fatal编程技术网

PostgreSQL+Django+South的第一步

PostgreSQL+Django+South的第一步,django,postgresql,migration,django-south,geodjango,Django,Postgresql,Migration,Django South,Geodjango,大家好 过去,我总是使用sqlite作为数据库平台在本地开发Django项目。现在,我想转移到PostgreSQL以利用GIS功能,但这一转变给我带来了巨大的悲痛 我已经安装了类似于此的postgresql,然后遵循创建数据库的步骤 此外,我用类替换了模型 from django.contrib.gis.db import models 加 geolocation = models.PointField(_('Geo Location'), geography

大家好

过去,我总是使用sqlite作为数据库平台在本地开发Django项目。现在,我想转移到PostgreSQL以利用GIS功能,但这一转变给我带来了巨大的悲痛

我已经安装了类似于此的postgresql,然后遵循创建数据库的步骤

此外,我用类替换了模型

from django.contrib.gis.db import models

geolocation = models.PointField(_('Geo Location'), 
                geography=True, 
                help_text=_('Geolocation with Longitude and Latitude'))

objects = models.GeoManager()
现在,在深入研究postgreSQL领域之前,我想通过Django管理员测试模型访问,我遇到了第一个错误

当我在管理中选择刚才修改的模型时,会出现以下错误:

**InternalError at /admin/remap/project/**
current transaction is aborted, commands ignored until end of transaction block 
这个错误与错误的sql查询有关,但是我很惊讶Django管理员创建了百万开发人员使用的错误sql语句,并且在早期的sqlite配置中运行良好

当我检查django sql语句时,我可以看到PointField的条目

"geolocation" geography(POINT,4326) NOT NULL,
但是当我检查psql\d项目时,我看不到对PointField的更改,这应该是导致错误的原因。因为我使用的是南方,所以我执行了

./manage.py schemamigration projects --initial
./manage.py migrate projects
但我明白了

Running migrations for projects:
- Nothing to migrate.
- Loading initial data for projects.
我如何才能说服south/postgresql有一些东西需要迁移? 您认为从SQLite到PostgreSQL的转换还有其他问题吗

谢谢你的回答和帮助

一个可能的答案:


你同步数据库了吗?通常,当我在south遇到问题时,我只是删除数据库并从头开始运行manage.py syncdb,以确保所有列都对齐。如果您希望south忽略支持迁移的应用程序,只需将syncdb更新到当前版本,您可以使用manage.py syncdb-all

嗨,Jeremy,谢谢您的回答。我注意到这个问题与psql有关。当我要删除特定的项目表时,请删除表项目,然后执行\d project-表仍然存在。难怪psql不会随着GiS的变化而改变。你知道怎么删除表吗?有可能是强制删除吗?如果你的问题偏离了原来的问题,你应该编辑它来解释当前的问题,或者如果有很大不同的话,应该考虑打开一个新的问题。我使用的是命令行,而不是命令行,因此在这方面我没有任何建议。但是,您描述的问题听起来可能与Django正在使用的数据库的副本不同。在数据库已经就绪的情况下,您应该首先使用south,对模型进行更改,然后运行,以便south创建迁移,最后使用命令应用迁移。根据您的问题判断,您更改了模型,然后运行schemamigration,该schemamigration没有任何冻结的模型来比较当前的模型,因此它无法检测到任何更改。