Mysql

Mysql CLI - 即使操作失敗也繼續執行

  • December 2, 2017

請考慮以下程式碼:

   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 命令。

使用**IF EXISTS**條款:

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

如果您嘗試刪除不存在的帳戶,則會發生錯誤。如果IF EXISTS給出了該子句,則該語句會為每個不存在的命名使用者生成警告,而不是錯誤。

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

您還可以強制該mysql工具忽略所有命令上的錯誤:

如果您希望腳本在其中的某些語句產生錯誤的情況下繼續執行,您應該使用--force命令行選項。

IEmysql --force -u root -p << ...

引用自:https://unix.stackexchange.com/questions/408431