the - postgis django
Error al guardar geodjango PointField (1)
Finalmente logró resolverlo.
La diferencia, tal como se documenta en este ticket , es que Postgres 9.1 tiene de forma predeterminada standard_conforming_strings
. Lo que realmente no sería un problema, excepto que el adaptador de Django tiene un error que básicamente lo ignora. Se envió un parche y está funcionando para mí.
Para aquellos que no quieran o no puedan aplicar el parche o la actualización, puede usar este adaptador de base de datos .
Tengo un modelo geo con una propiedad PointField. Todo funciona perfectamente a nivel local, pero cuando intento guardar una instancia en el servidor, aparece el siguiente error:
django.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0x00
Busqué en la fuente y encontré que los valores se están serializando de manera diferente; específicamente, ese valor no se está escapando antes de que la consulta se ejecute en el servidor. Parece que psycopg2.Binary.getquoted()
realiza el psycopg2.Binary.getquoted()
y, por supuesto, no devuelve el valor correcto en el servidor.
En mi máquina:
from psycopg2 import Binary
Binary(''/0'').getquoted() # > "''////000''::bytea"
En el servidor:
from psycopg2 import Binary
Binary(''/0'').getquoted() # > "''//000''::bytea"
Está bien, eso explica por qué cree que estoy intentando insertar un byte nulo. (Porque lo soy). Ahora sé lo suficiente sobre lo que está mal para encontrar un informe similar de Jonathan S. sobre el grupo de usuarios de django pero, como Jonathan, no sé si se trata de un error de configuración o error.
¿Puede alguien apuntarme en la dirección correcta?
Aquí hay algo de información sobre las configuraciones:
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