django - PostgreSQL + Django + South 的第一步

标签 django postgresql migration django-south geodjango

嗨 Stackoverflow 的人,

过去,我总是使用sqlite作为数据库平台在本地开发我的Django项目。现在,我想迁移到 PostgreSQL 以利用 GIS 功能,但这种转变让我感到非常悲伤。

我已经安装了类似于此的 postgresql post然后跟着GeoDjango description用于创建数据库。

此外,我将模型类替换为

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 Admin 测试模型访问,但我遇到了第一个错误。

当我在 Admin 中选择模型(我刚刚按上述修改)时,出现以下错误:

**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 projects 时,我看不到对 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 的转换有任何其他问题?

感谢您的回答和帮助!

最佳答案

可能的答案:

你有syncdb吗?通常当我遇到 south 的问题时,我只是删除数据库并从头开始运行 manage.py syncdb 以确保我的所有列都符合要求。如果你想让 south 忽略支持迁移的应用程序,只同步到当前版本,你可以使用 manage.py syncdb --all

关于django - PostgreSQL + Django + South 的第一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9043553/

相关文章:

python:在后台运行命令

python - 使用子查询注释计数

python - AWS API 网关和 Lambda - API 分页

ruby-on-rails - 我必须定义什么类型的列才能生成文本区域 Ruby on Rails

即使模型没有改变,django 也会继续创建新的迁移

python - 使用像 jsbin 这样的哈希处理 url

Django负载均衡: How to share user media?

sql - PostGIS:计算点和 2 fks 之间的最小距离:起点和终点

javascript - Node.JS 回调关闭 websocket

mysql - rake 数据库 :migrate missing :controller