gpt4 book ai didi

django - 在 django1.4 和 postgresql 8.1 中避免 RETURN postgresql 语句与 bug #10467 相关

转载 作者:行者123 更新时间:2023-11-29 12:27:51 25 4
gpt4 key购买 nike

几天前,我使用管理功能在 django1.4 中编写了一个项目,目的是为从遗留系统迁移到新系统的调试数据制作 CRUD(迁移并不完全成功),我写道它使用 django 1.4 并在我的笔记本电脑中使用生产数据库的副本,但在我的 linux 中我使用 postgresql9.1,因此,当我尝试将项目配置为原始服务器 (postgresql8.1) 中的测试数据库时,出现错误在 syncdbmigrate 语句中:

File "/home/diegueus9/webapps/fixsysandinos/local/lib/python2.7/site-packages/django/db/backends/util.py", line 40, in execute
return self.cursor.execute(sql, params)
File "/home/diegueus9/webapps/fixsysandinos/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
return self.cursor.execute(query, args)
django.db.utils.DatabaseError: syntax error at or near "RETURNING"
LINE 1: ...") VALUES (E'permission', E'auth', E'permission') RETURNING ...

所以,我做了一些调查,找到了票 #10467 (目前已关闭)在 django 中,它表示使用 statment RETURNING 在 postgresql 8.1 中引入了一个错误,因为它直到 8.2 才支持该语法(我认为),该错误在 8 个月前就已关闭,但我认为在一些点被重新引入。在票证的线程中说问题可能与自动提交行为有关,并讨论了 connection.features.can_return_id_from_insert

所以问题是:

这是一个必须重新打开的错误?我必须禁用自动提交行为并承担风险(我不希望如此)或者通过设置我可以将 connection.features.can_return_id_from_insert 设置为 False 并以这种方式完成我的目标?

最佳答案

当升级数据库或降级你的 django 版本不是一个选项,因为这是客户端的要求,你仍然可以 django1.4 在你自己的责任下你可以禁用 RETURN 语句设置 can_return_id_from_insert 到第 77 行 django.db.backends.postgresql_psycopg2.base 中的 False。但这会影响 django 的行为,所以你真的必须或应该使用类似 virtualenvwrapper 的东西

关于django - 在 django1.4 和 postgresql 8.1 中避免 RETURN postgresql 语句与 bug #10467 相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10891532/

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