2017-06-22 12 views
0

WindowsのMysql Workbenchで実行するデータクリーンアップスクリプトがあります。スクリプトの冒頭で私が持っている:MySql:スクリプトが停止したら停止してください。(特定の結果)

select @@hostname; 
-- WARNING: it HAS to be `srv-datatest` 

(+ the rest of the script) 

私は条件が(@@ホスト名=「SRV-DATATEST」)満たされない場合、スクリプトはその行で停止します。

DECLARE invalid_database CONDITION FOR 1051; 
SIGNAL invalid_database; 
-- DECLARE is not accepted by my workbench, and it lacks the "if" part anyway 

選択にIFを行う方法:

SELECT IF(@@hostname='srv-datatest','yes','no'); 
-- It lacks the "stop here" part 
+1

答えをご覧ください:https://stackoverflow.com/q/3560149/1503018 – sectus

+0

@sectus提案をいただきありがとうございます。私はこれらのソリューションの1つを利用してニーズに合わせて修正しました([answer](https://stackoverflow.com/a/44697123/831138)を参照)。 –

答えて

0

が格納作成

がどのように例外をスローする:私が試した


物事あなたのプロセスとテストを実行する手順。

だけストアドプロシージャを呼び出す必要があり、MySQLのワークベンチでのスクリプト

0

this ingenious solution使用して、ストアドプロシージャせずにそれを実行することが可能である:

  • の場合:このコードで

    SET @hostname := (SELECT @@hostname); 
    SET @condition = (@hostname='srv-datatest'); 
    SET SESSION sql_mode = if(@condition, @@SESSION.sql_mode, 'Script stopped. Check condition.'); 
    

    @condition=1、スクリプトはスムーズに実行されます。

  • @condition=0の場合、メッセージエラーを示す例外がスローされます。
関連する問題