아~ 오랜만에 질문을 올리는 군요.
오늘 황당한 일을 접해서 질문을 올립니다.
보통 서버에 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 입니다. |