2017-06-22 48 views
0

我有一個數據清理腳本,我在Windows中的Mysql Workbench中執行。在腳本的開始,我有:MySql:停止腳本如果選擇!=(某些結果)

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

(+ the rest of the script) 

我希望腳本在該行停止,如果條件(@@主機名=「SRV-數據測試」)不滿足。


的事情,我已經試過:

如何拋出一個異常:

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謝謝你的建議。我設法採取了其中一種解決方案,並將其修改爲符合我的需求(請參閱[答案](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它會拋出異常,顯示消息錯誤。