Несколько дней назад я пишу проект в django1.4 с использованием возможностей администратора с намерением сделать CRUD для отладочных данных, перенесенных из унаследованной системы к новой системе (миграция не была полностью успешной), я пишу ее с помощью django 1.4 и с копией базы данных на моем ноутбуке, но в моем Linux я использую postgresql9.1, поэтому, когда я попытался настроить проект до тестирования databes в исходном сервере (postgresql8.1) я получил ошибки в syncdb
и migrate
statments:Избегайте RETURN postgresql statment в django1.4 и postgresql 8.1, связанных с ошибкой # 10467
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 (в настоящее время закрыт) я n django, в котором говорится, что использование statment RETURNING приводит к ошибке в postgresql 8.1, потому что он не поддерживает этот синтаксис до 8,2 (я думаю), ошибка появляется как закрытая 8 месяцев назад, но я думаю, что в какой-то момент снова был введен. В потоке билетов говорится, что проблема может быть связана с поведением autocommit и говорит о connection.features.can_return_id_from_insert
.
Так вопросы:
Это ошибка, должно быть возобновлено? Я должен отключить поведение autocommit и принять на себя риски (я не надеюсь, что так), или, может быть, через настройки я могу установить connection.features.can_return_id_from_insert
на False
и таким образом выполнить мою цель?
PostgreSQL версия 8.1 является EOL по состоянию на декабрь 2010 года. –
Я согласен с Фрэнком. Почему бы вам не перейти на поддерживаемую (и гораздо лучшую) версию PostgreSQL? –
Я не могу обновить базу данных, потому что клиент не может позволить себе оплатить миграцию. – diegueus9