運行腳本文件時,時常看到這樣的信息:
/!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /;
/!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS /;
/!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION /;
/!40101 SET NAMES utf8 /;
/!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE /;
查閱資料後,得到/!代碼 ……/的解釋如下:
MySQL服務器包含一些其他SQL DBMS中不具備的擴展。注意,如果使用了它們,將無法把代碼移植到其他SQL服務器。在某些情況下,你可以編寫包含MySQL擴展的代碼,但仍保持其可移植性,方法是用“/… /”注釋掉這些擴展。在本例中,MySQL服務器能夠解析並執行注釋中的代碼,就像對待其他MySQL語句一樣,但其他SQL服務器將忽略這些擴展。例如:
SELECT /! STRAIGHT_JOIN / col_name FROM table1,table2 WHERE …
如果在字符“!”後添加了版本號,僅當MySQL的版本等於或高於指定的版本號時才會執行注釋中的語法:
CREATE /!32302 TEMPORARY / TABLE t (a INT);
這意味著,如果你的版本號為3.23.02或更高,MySQL服務器將使用TEMPORARY關鍵字。