다음 코드를 고려해보세요:
mysql -u root -p << MYSQL
drop user '${test}'@'localhost';
drop database ${test};
create user '${test}'@'localhost' identified by '${psw}';
create database ${test};
GRANT ALL PRIVILEGES ON ${test}.* TO ${test}@localhost;
MYSQL
첫 번째 명령의 경우 코드는 다음 오류를 출력합니다 drop user '${test}'@'localhost';
.
오류 1396(HY000): "${test}"@"localhost"에 대한 DROP USER 작업이 실패했습니다.
내 질문
이 오류가 발생하면 실행이 중단되지 않도록 프로그램이 이를 무시하도록 하려면 어떻게 해야 합니까?
예를 들어, 프로그램이 다음과 같은 방식으로 실행되도록 하려면 어떻게 해야 합니까?
"이미 사용자가 있으면
${test}
삭제하고, 없으면 새로 만드세요."
물론 데이터베이스 인스턴스를 처리하는 두 번째 drop 명령에도 동일한 문제가 존재합니다.
답변1
사용IF EXISTS
자귀:
DROP USER IF EXISTS '${test}'@'localhost';
존재하지 않는 계정을 삭제하려고 하면 오류가 발생합니다. 이 절이 제공 되면
IF EXISTS
명령문은 존재하지 않는 지정된 각 사용자에 대해 오류 대신 경고를 생성합니다.
답변2
당신은 또한 수mysql
도구를 강제로 사용하라모든 명령에 대한 오류를 무시합니다.
스크립트의 일부 문에서 오류가 발생하더라도 스크립트가 계속 실행되도록 하려면
--force
명령줄 옵션을 사용해야 합니다.
즉mysql --force -u root -p << ...