2

며칠 전 레거시 시스템에서 마이그레이션 한 디버그 데이터에 대한 CRUD를 만들기 위해 admin 기능을 사용하여 django1.4에서 프로젝트를 작성했습니다 새 시스템 (마이그레이션이 완전히 성공하지 못함)으로 django 1.4를 사용하고 랩톱에 프로덕션 데이터베이스 복사본을 작성했지만 내 리눅스에서는 postgresql9.1을 사용하므로 프로젝트를 구성하려고했을 때 원래 서버에서 테스트 databes (postgresql8.1)에 나는 syncdbmigrate 문에서도 오류 가지고 :버그 # 10467과 관련된 django1.4 및 postgresql 8.1의 RETURN postgresql statment 피하기

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 개월 전에 닫힌 것처럼 보이지만 어떤 시점에서는 다시 도입되었다고 생각합니다. 티켓의 스레드에서 문제는 자동 커밋 동작과 관련 될 수 있으며 회신은 connection.features.can_return_id_from_insert입니다.

그래서 질문은 : 그것은이 버그가

을 다시 열 수 있나요? 자동 커밋 동작을 비활성화하고 위험을 가정해야합니다 (나는 그렇게 희망하지 않습니다) 또는 설정을 통해 connection.features.can_return_id_from_insertFalse으로 설정하고 이러한 방식으로 목표를 달성 할 수 있습니까? 데이터베이스를 업그레이드하거나 클라이언트의 요구 사항입니다 때문에 장고 버전이 옵션을 선택하지 않습니다 다운 그레이드

+1

PostgreSQL 버전 8.1은 2010 년 12 월 현재 EOL입니다. –

+0

나는 Frank에 동의합니다. 왜 PostgreSQL의 지원되는 (그리고 더 나은) 버전으로 업그레이드하지 않습니까? –

+0

클라이언트가 마이그레이션 비용을 감당할 수 없으므로 데이터베이스를 업그레이드 할 수 없습니다. – diegueus9

답변

0

, 당신은 여전히 ​​당신이 django.db.backends.postgresql_psycopg2.baseFalsecan_return_id_from_insert 설정 RETURN 문을 해제 할 수 있습니다 자신의 Responsibility는에서 을 django1.4 수 있습니다 하지만 이것은 django의 동작에 영향을 미치므로 virtualenvwrapper