Tengo un modelo geográfico con una propiedad PointField. Todo funciona perfectamente a nivel local, pero cuando intento para salvar a una instancia en el servidor, me sale el siguiente error:Error al guardar geodjango PointField
django.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0x00
cavé en la fuente y se encontró que los valores se publica por entregas de manera diferente; específicamente, ese valor no se está escapando antes de que la consulta se ejecute en el servidor. Parece que el escapado se está realizando por 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"
bien, eso explica por qué cree que estoy tratando de insertar un byte nulo. (Porque lo soy.) Así que ahora sé lo suficiente sobre lo que está pasando para encontrar un informe similar de Jonathan S. en el django-users group pero, al igual que Jonathan, no sé si se trata de un error o un error de configuración.
¿Puede alguien señalarme 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
Gracias por compartir matthew. Estoy muy contento de haber tropezado con tu publicación :) – infiniteloop
¡Me alegro de que haya sido útil! – matthewwithanm
Gracias! establecer standard_conforming_strings = off en postgresql.conf también funcionó para mí. – Pablo