sql 실행결과 로그로 출력하기
회사에서 사용하는 DB 데이터를 Crontab 으로 쉘스크립트를 사용하여 주기적으로 삭제하려고 합니다.
삭제가 정상적으로 됐을때와 정상적으로 되지 않았을 때 로그를 남기고 싶은데요,
DB 에러가 발생했을때는 화면이나 파일에 출력을 할 수가 있는데 (eg. 없는 칼럼이라 삭제실패 등)
정상적으로 삭제가 되었을때는 어떤 값을 보고 정상이라고 로그를 찍어야 할지 모르겠습니다.
실행결과값을 통째로 변수에 저장하여 NULL 로 판단해보려 했으나,
sql 에러가 발생했을때나 발생하지 않았을때나 모두 변수에는 NULL 이 들어가버리더군요.
아래와 같은 경우 성공or 실패를 어떻게 판단해야 하는지 고수분들의 고견을 여쭙습니다.. (__)
아래는 제가 테스트에 사용중인 쉘스크립트 입니다. (test09 일경우 실패, test10 일경우 성공)
-------------------------------------------------------------
NOW=$(date "+%Y-%m-%d-%T")
echo "$NOW"
SQL_OUTPUT=$(exec mysql --login-path=aics-clear -N -e "
use AICS;
insert into AICS.TB_MAIL (MAIL_ID) values ('test09')")
if [ -z $SQL_OUTPUT ]
then
echo "success"
fi
=> 데이터가 insert 실패할 경우 결과
2019-12-12-10:25:19
ERROR 1062 (23000) at line 3: Duplicate entry 'test09' for key 'PRIMARY'
success
=> 데이터가 insert 성공할 경우 결과
2019-12-12-10:25:43
success
sql문으로 해보진 않았지만
sql문으로 해보진 않았지만
일반적으로 $? 로 커맨드 성공여부를 판단하기 합니다.
sql 실행후 echo $? 로 출력 해보세요
0이면 정상 그 외에값은 에러
글이 잘못 올라긴 했느데 커맨드가 아니라 변수입니다.
글이 잘못 올라긴 했느데 커맨드가 아니라 변수입니다.
말씀하신 방법도 이미 해보았는데, 성공,실패 동일한
말씀하신 방법도 이미 해보았는데, 성공,실패 동일한 값으로 출력됩니다.
$? 변수는 command 자체가 error 일 때만 유용하더라고요.. ㅠㅠ
댓글 감사합니다!!
잘 된는거 같은데요??
잘 된는거 같은데요??
와... 제가 구문을 잘못 넣었던 거네요..
와... 제가 구문을 잘못 넣었던 거네요..
진심으로 정말 감사드립니다.ㅠㅠㅠㅠ 복 받으실거에요..
행복한 하루 되시고 주말 잘 보내세요^^
댓글 달기