database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 5598 게시물 읽기
No. 5598
시스템 사용자에 따라서 transaction(commit, rollback) 처리가 안 될 수도 있나요?
작성자
김한성
작성일
2004-10-14 01:39ⓒ
2004-10-14 01:50ⓜ
조회수
4,174

아~ 오랜만에 질문을 올리는 군요.

 

오늘 황당한 일을 접해서 질문을 올립니다.

 

보통 서버에 systemusera 유저로 접속해서(systemusera 는 시스템 유저입니다.) psql dba dbusera 이런 식으로 접속해서 사용했습니다.(dbusera 는 데이터베이스 유저이죠.)

 

그런데 오늘 우연히 systemuserb (역시 시스템 유저입니다.) 로 접속해서 psql dba dbusera와 같이 실행해서 db 에 접속했습니다.

 

즉, 시스템 유저는 다르지만 동일한 db에 동일한 db 사용자 로 접속을 했습니다.

그런데 누가 옆에서 말을 자꾸 거는 통에 아차하고 where 절을 빼먹고 update 를 했습니다.

이런...

순식간에 수만건의 자료가 같은 내용으로 바뀌었습니다.

그래도 rollback 이 있으니까... 하면서 자신있게 rollback 을 했죠.

그런데...

WARNING: there is no transaction in progress

즉, 실행할 트랜잭션이 없다면서 rollback 이 안되지 뭡니까?

 

당황해서 다시 해 보았지만 이미 자료는 바뀐 뒤 였습니다.

혹시 자료 량이 많아서 안되나 하고 1건만 가지고 해보았는데, 역시 rollback 이 안되는 것입니다.

바로 자동 commit 이 되더군요.

 

이런... mysql이나 mssql 쓰는 것도 아니고 이게 뭐야!

게다가 평소에 잘 되던게 하필이면 이때에!

 

하며 이것 저것 해보다가 혹시나 하고 평소에 접속하던 systemusera 로 접속해서 db 에 접속한 다음 update 해 보았습니다.

rollback , commit 잘 됩니다...

 

이게 뭔 상황입니까?

황당하기가 그지 없군요.

다행히 update 된 필드가 그다지 중요한 필드는 아니어서 뭐 어떻게 수습은 했지만, 정말 큰일 날 뻔 했습니다.

 

알고 계신 분, 아니면 같은 경험을 하신 분은 조언 부탁드립니다.

 

아참, 버전은 PostgreSQL 7.4.1  입니다.

이 글에 대한 댓글이 총 3건 있습니다.

각 사용자 계정 홈 디렉토리에 .psqlrc 가 있는지 살펴보시고, 그 .psqlrc 에 autocommit 관련 셋팅 값이 서로 같은지 비교해 보십시오.

 

아마 이 문제 때문인듯합니다.

 

.psqlrc 에서

\set AUTOCOMMIT off

설정을 해 두는 것이 여러 모로 안전 한 것 같습디다.

 

김상기(ioseph)님이 2004-10-14 02:13에 작성한 댓글입니다.

오호~

같은 부엉이과다!

 

직장 생활하시면서 이 시간까지 안 잘 수 있나요?

저야 10시까지 출근이니까 뭐, 조금 늦게 자는 경향이 있지만서도, 9시 출근하시는 분들은 힘들텐데...

 

각설하고 그 문제 맞습니다.

systemuserb 는 지금까지 psql 에 한 번도 접속한 적이 없던 유저 입니다.

해서 .psqlrc을 만들어서 \set AUTOCOMMIT off 를 넣어 주었죠.

 

지금 자려고 테스트 해보지는 않았지만 이게 맞는 것 같군요.

감사합니다.

 

그런데, 이 파일이 자동생성 아니었나요?

systemusera 라는 유저를 처음부터 사용했는데, 이 파일을 만들어 넣었던 기억이 없어서요.

(워낙 건망증이 심해서 자신은 없습니다.^^)

하여간 오늘 정말 큰일 날 뻔 했습니다.

회원정보 테이블이었거든요. -.-;;

마누라가 뭐라뭐라 계속 옆에서 쫑알대는 통에, 대꾸 안해주면 삐질 것 같아서 둘 다 신경쓰다가 이렇게 큰일을 쳤네요.

db 다룰 때는 집중 집중...

 

그리고 dsn 사이트 개선점에 대해서 새글로 올렸는데, 고치는데 시간이 없으시면 관련 소스 보내주시면 제가 수정해보도록 하겠습니다.

저가 웹프로그래머 거든요.

 

김한성님이 2004-10-14 02:36에 작성한 댓글입니다. Edit

우선 죄송하다는 말을 올립니다.

 

이 유사한 질문을 2004-02-06 에 이미 올렸더군요.

보통 때는 검색을 일단 해보는데, 어제는 검색을 왜 안했는지 모르겠군요.

하여간 어제는 실수 투성이의 하루였답니다.

 

그건 그렇고, 어떻게 이렇게 까맣게 잊고 있었는지 원.

요즘 건망증이 너무 심해져서 프로그램하는데 정말 애로가 많습니다.

어제는 DB 설계하다가 불과 수시간전에 만든 필드를 왜 만들었는지 잊어먹어서 순간 당황했었습니다.

다행히 erwin 에 주석을 달아놔서 기억하기는 했는데, 요즘의 제 기억력의 상황은 두려움까지 느끼게 합니다.

 

총명탕 잘 만드는 곳 아시는 분...

김한성님이 2004-10-14 12:08에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5605char(n)에서 n미만 길이로 값 입력 후 값을 읽어 들이면 뒷 공백문자가 항상 같이 따라 다닙니까? [12]
김창욱
2004-10-14
3502
5604단순 vacuum과 table 공간 절약 test [4]
박성철
2004-10-14
3161
5599database.sarang.net 은 여러 브라우저에서 보여야 한다고 생각합니다. [4]
김한성
2004-10-14
2190
5598시스템 사용자에 따라서 transaction(commit, rollback) 처리가 안 될 수도 있나요? [3]
김한성
2004-10-14
4174
5597데이터 베이스를 복사하려는데요. [5]
willow
2004-10-12
2663
5596pg_dump의 -d옵션 [1]
db
2004-10-12
2445
5595조언을 구합니다. 로그를 이용한 증분 백업에 대하여. [4]
박지현
2004-10-12
3387
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2025 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v17.5로 자료를 관리합니다