几天前,我在 django1.4 中使用管理功能编写了一个项目,目的是为从遗留系统迁移到新系统的调试数据制作 CRUD(迁移并不完全成功),我使用 django 编写它1.4 并在我的笔记本电脑中使用生产数据库的副本,但在我的 linux 中我使用 postgresql9.1,因此,当我尝试将项目配置为原始服务器(postgresql8.1)中的测试数据库时,我在syncdb
和migrate
陈述:
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 ...
所以,我做了一些研究,我在 django 中找到了票#10467(目前已关闭),它说使用 statment RETURNING 在 postgresql 8.1 中引入了一个错误,因为它直到 8.2 才支持该语法(我认为) ,该错误在 8 个月前显示为已关闭,但我认为在某些时候被重新引入。在票的线程中说问题可能与自动提交行为有关,并谈到connection.features.can_return_id_from_insert
.
所以问题是:
这是一个必须重新打开的错误?我必须禁用自动提交行为并承担风险(我不希望如此)或者通过我可以设置connection.features.can_return_id_from_insert
的设置False
并以这种方式实现我的目标?