Mysql CLI - 작업이 실패하더라도 계속 실행

Mysql CLI - 작업이 실패하더라도 계속 실행

다음 코드를 고려해보세요:

    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명령문은 존재하지 않는 지정된 각 사용자에 대해 오류 대신 경고를 생성합니다.

https://dev.mysql.com/doc/refman/5.7/en/drop-user.html

답변2

당신은 또한 수mysql도구를 강제로 사용하라모든 명령에 대한 오류를 무시합니다.

스크립트의 일부 문에서 오류가 발생하더라도 스크립트가 계속 실행되도록 하려면 --force명령줄 옵션을 사용해야 합니다.

mysql --force -u root -p << ...

관련 정보