2012-03-22 27 views
2

mysqldump包裹在C風格的註釋我的存儲過程:如何關閉/ * 12345 ... * /在mysqldump的

DELIMITER ;; 
/*!50003 CREATE*/ /*!50020 DEFINER=`user`@`localhost`*/ /*!50003 PROCEDURE `insert_cat`(

之所以是MySQL的擴展:

然而,HeidiSQL不使用擴展:

DELIMITER // 
CREATE DEFINER=`user`@`localhost` PROCEDURE `insert_cat`(

如何關閉mysqldump的擴展功能?

+0

可能的重複[如何擺脫MySQL轉儲中的這些註釋?](http://stackoverflow.com/questions/1916392/how-can-i-get-rid-of-these-comments- in-a-mysql-dump) – 2012-03-22 19:44:18

+1

@JohnB - 我不知道你想做什麼 - 關閉條件執行語句的註釋指示符,或者停止出現條件執行語句。換一種方式,HeidiSQL是否處理它們,並且希望她停止處理它們,還是她不處理它們,並且希望她開始處理它們?如果你可以「關閉擴展」,你不會得到CREATE ...語句,對吧? – 2012-03-22 20:07:10

+0

我希望'mysqldump'以類似於HeidiSQL的方式生成SQL腳本,即沒有擴展註釋,但使用'create'語句。請看這兩個例子。我不知道該怎麼說。 – JohnB 2012-03-22 20:18:07

回答

0

我想我們正在吠叫錯誤的樹。如果我瞭解他們在他們的網站上說的話,HeidiSQL是一個接口到MySQL數據庫,而不是替代它。

所以答案是你仍然有MySQL在你的HeidiSQL接口下運行:不要讓HeidiSQL讀取轉儲文件,將轉儲文件(包括MySQL知道的所有條件表達式)提供給MySQL。

+0

你假設我不想在我的DDL腳本中添加註釋的原因是我想從HeidiSQL運行它們。事實並非如此。 *我只想要更乾淨的DDL腳本。*叫我瘋了。 – JohnB 2012-03-23 17:01:24

+0

@JonhB - 好的,你是「瘋狂的」。我真的不相信。你是否知道註釋開啓者之後的數字(例如「/ *!50020」中的「!50020」是MySQL的版本號?)這是一個條件表達式,任何MySQL版本不夠完善的版本都會被忽略。條件表達式,你必須對你正在運行的MySQL版本和它能理解的條件表達式做出你自己的假設。爲什麼這麼做?(我只是好奇)另外,你可以寫一個相當簡單的sed腳本來刪除評論指定並保留表達式 – 2012-03-23 17:30:48

+0

我知道它們是什麼,我只是認爲它們是不必要的,例如:'/ *!50003 CREATE * /',真的嗎?我正在嘗試版本DDL;我不知道我不認爲我需要這些*瘋狂的*評論。無論如何,我發現Linux版本的mysqldump.exe客戶端比Windows客戶端有更清潔的輸出。 – JohnB 2012-03-23 20:18:05