2

Несколько дней назад я пишу проект в 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 и таким образом выполнить мою цель?

+1

PostgreSQL версия 8.1 является EOL по состоянию на декабрь 2010 года. –

+0

Я согласен с Фрэнком. Почему бы вам не перейти на поддерживаемую (и гораздо лучшую) версию PostgreSQL? –

+0

Я не могу обновить базу данных, потому что клиент не может позволить себе оплатить миграцию. – diegueus9

ответ

0

При обновлении базы данных или понизить ваше Джанго версия не вариант, потому что это требование клиента, вы можете django1.4 под собственный вы ее ответственности можно отключить геЬигп настройки can_return_id_from_insert к False в django.db.backends.postgresql_psycopg2.base в строка 77. Но это влияет на поведение django, поэтому вы действительно должны или должны использовать что-то вроде virtualenvwrapper

Смежные вопросы