我有一个带有点域属性的地理模型.一切都可以在本地完美运行,但当我试图在服务器上保存实例时,会出现以下错误:

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

推荐答案

终于找到了答案.

正如this ticket中所记录的那样,不同之处在于Postgres 9.1在默认情况下启用了standard_conforming_strings.这其实不是问题,除了Django的适配器有一个基本上忽略它的错误.A patch was submitted而且对我有用.

对于那些不愿意或无法应用补丁或升级的用户,您可以使用this database adapter instead.

Postgresql相关问答推荐

使用PythonPolar在PostgreSQL中存储

在PostgreSQL中,`MY_VARIABLE IN(<;Long_ARRAY_of_Items>;)`何时是FAST?

gorm 不生成字符串列

如何 Select 任意行的相邻行(在 sql 或 postgresql 中)?

Rails:安装 pg gem 时出错

如何让 Flask SQLAlchemy 重用数据库连接?

包含受先前 DELETE 影响的行数的变量?

在执行 postgresql 函数时提交事务

如何使用 ActiveRecord json 字段类型

将 Postgres 与 Grails 一起使用

带有 postgres 的 DOCKER 容器,警告:could not open statistics file "pg_stat_tmp/global.stat": Operation not permitted

如何在容器内创建 postgres 扩展?

是否可以在 Postgres 中存储一个 1 字节的数字?

在这个 Dockerfile 中创建的 Postgres 用户名/密码在哪里?

H2 postgresql mode模式似乎不起作用

在 postgreSQL 中更改序列名称

SQL 基本类型:integer vs int?

带有 WITH 子句的查询时出现 Postgresmissing FROM-clause entry错误

如何使用 PostgreSQL 在任何列中查找所有具有 NULL 值的行

Postgresql 用随机值更新每一行