我有一个带有点域属性的地理模型.一切都可以在本地完美运行,但当我试图在服务器上保存实例时,会出现以下错误:
django.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0x00
我深入研究了源代码,发现这些值的序列化方式不同;具体来说,在服务器上执行查询之前,不会转义该值.看起来转义是在psycopg2.Binary.getquoted()
之前完成的,果然,它没有在服务器上返回正确的值.
在我的机器上:
from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\\\000'::bytea"
在服务器上:
from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\000'::bytea"
这就解释了为什么它认为我要插入一个空字节.(因为我是.)所以现在我对问题的了解已经足够多,可以找到Jonathan s.关于django-users group的类似报告,但和Jonathan一样,我不知道这是错误还是配置错误.
谁能给我指一下正确的方向吗?
以下是有关设置的一些信息:
My computer Server
OS OSX 10.7 CentOS 5.5
Python 2.7 2.6
Django 1.3 1.3
Postgres 9.0.4 9.9.1
postgis 1.5.2 1.5.3-2.rhel5
geos 3.3.0 3.3.0-1.rhel5