Ошибка при сохранении геоджанго PointField

У меня есть геомодель со свойством PointField. Все работает идеально локально, но когда я пытаюсь сохранить экземпляр на сервере, я получаю следующую ошибку:

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"

Хорошо, это объясняет, почему он думает, что я пытаюсь вставить нулевой байт. (Потому что я.) Итак, теперь я знаю достаточно о том, что идет не так, чтобы найти похожий отчет Джонатана С. в группе пользователей django , но, как и Джонатан, я не знаю, является ли это ошибка или ошибка конфигурации.

Может ли кто-нибудь указать мне правильное направление?

Вот некоторая информация о настройках:

          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

22
задан matthewwithanm 5 October 2011 в 21:05
поделиться