gpt4 book ai didi

django - 保存 geodjango PointField 时出错

转载 作者:行者123 更新时间:2023-11-29 11:08:50 26 4
gpt4 key购买 nike

我有一个带有 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-users group 上找到 Jonathan S. 的类似报告。但是,和 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。 .

关于django - 保存 geodjango PointField 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7667724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com