임을 차단하고 내가 ALTER TABLE 내가포스트 그레스는 표가 포스트 그레스 8.3을 실행
SELECT t.relname,l.locktype,page,virtualtransaction,pid,mode,granted FROM pg_locks l, pg_stat_all_tables t WHERE l.relation=t.relid ORDER BY relation asc;
테이블의 이름이 대리점입니다이 쿼리를 실행할 때 AccessShareLock에 의해 차단 될 것으로 보인다 ADD COLUMN 문 실행하는 데 문제가 있어요 ALTER.
relname | locktype | page | virtualtransaction | pid | mode | granted
dealer | relation | | 2/40 | 12719 | AccessExclusiveLock | f
dealer | relation | | -1/154985751 | | AccessShareLock | t
나는 또한 내가이 실행 -1/154985751
트랜잭션 ID 154985751가 pg_locks 테이블의 virtualtransaction과 유사
transaction | gid | prepared | owner | database
154985751 | 131075_MS1hMzIwM2E3OmIwMjM6NTQxMGY0MzE6MWM1ZTg5OQ==_YTMyMDNhNzpiMDIzOjU0MTBmNDMxOjFjNWU4OWM= | 2014-09-19 08:01:49.650957+10 | user | database
반환
SELECT * FROM pg_prepared_xacts
를 실행 데이터베이스에서 쿼리를 실행할 수있는 프로세스를 보는 명령
ps axu | grep postgres | grep -v idle
그리고 데이터베이스에서 쿼리를 실행하는 다른 프로세스가 없음을 확인했습니다. 쿼리가 딜러 테이블에 AccessShareLock 원인이 될 수 무엇
2014-11-14 17:25:00.794 EST (pid: 12719) LOG: statement: BEGIN;
2014-11-14 17:25:00.794 EST (pid: 12719) LOG: statement: ALTER TABLE dealer ADD bullet1 varchar;
2014-11-14 17:25:01.795 EST (pid: 12719) LOG: process 12719 still waiting for AccessExclusiveLock on relation 2321398 of database 2321293 after 1000.133 ms
2014-11-14 17:25:01.795 EST (pid: 12719) STATEMENT: ALTER TABLE dealer ADD bullet1 varchar;
를 실행 한 후
로그 파일이 표시? 그것은 트랜잭션과 관련이 있다고 추측합니다 154985751 가상 ID를 사용하여 트랜잭션을 종료하는 방법이 있습니까?
실제로 지원되는 최신 버전으로 업그레이드 할 계획입니다. 8.3은 * 정말로 * 오래되었습니다. –
예, http://www.postgresql.org/support/versioning/. 업그레이드 계획을 세우십시오. 진지하게. –