Ho un modello geografico con una proprietà PointField. Tutto funziona alla perfezione a livello locale, ma quando provo a salvare un'istanza sul server, ottengo il seguente errore:Errore nel salvataggio di geodjango PointField
django.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0x00
ho scavato nella sorgente e ha scoperto che i valori vengono serializzati in modo diverso; in particolare, quel valore non viene scappato prima che la query venga eseguita sul server. Sembra che l'escaping sia fatto da psycopg2.Binary.getquoted()
e sicuramente, non restituisce il valore corretto sul server.
Sulla mia macchina:
from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\\\000'::bytea"
Sul server:
from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\000'::bytea"
Okay, questo spiega perché pensa che io sto cercando di inserire un byte null. (Perché io sono.) Così ora so abbastanza su cosa non va nel trovare un rapporto simile di Jonathan S. su django-users group ma, come Jonathan, non so se si tratta di un bug o di un errore di configurazione.
Qualcuno può indicarmi la giusta direzione?
Ecco alcune informazioni circa le impostazioni:
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
Grazie per aver condiviso Matthew. Sono davvero felice di essermi imbattuto nel tuo post :) – infiniteloop
Felice che sia stato d'aiuto! – matthewwithanm
Grazie! anche l'impostazione standard_conforming_strings = off in postgresql.conf ha funzionato per me. – Pablo