Mysql CLI - continua a execução mesmo que a operação falhe

1

Por favor, considere este código:

    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

O código gera o seguinte erro para o primeiro comando drop user '${test}'@'localhost'; :

ERROR 1396 (HY000): Operation DROP USER failed for '${test}'@'localhost'

Minha pergunta

Como eu poderia fazer o programa ignorar esse erro se ele aparecer, de modo que a execução não seja interrompida?

Por exemplo, como posso ter certeza de que o programa irá comportar dessa maneira:

"Drop if you already have a user by the value of ${test}, and if you don't, just continue to create it".

Naturalmente, a mesma pergunta vale para o segundo comando de entrega lidando com a instância do banco de dados.

    
por Arcticooling 02.12.2017 / 21:34

2 respostas

2

Use a cláusula IF EXISTS :

DROP USER IF EXISTS '${test}'@'localhost';

An error occurs if you try to drop an account that does not exist. If the IF EXISTS clause is given, the statement produces a warning for each named user that does not exist, rather than an error.

link

    
por 02.12.2017 / 21:48
1

Você também pode forçar a ferramenta mysql a ignorar erros todos os comandos:

If you want the script to continue even if some of the statements in it produce errors, you should use the --force command-line option.

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

    
por 02.12.2017 / 23:20

Tags