2013-03-19 28 views
3

查看一個mysqldump的輸出,我在頂部看到以下內容。在MysqlDump開始時的語句是什麼?

同樣散佈在我看到/ *中的各種語句! * /塊。我的猜測是,這些可能是有條件地執行基於版本,但不幸的是,谷歌剝離符號很難證實這一點。

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
/*!40103 SET @[email protected]@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; 

下面是對MySQL手冊中這些語句的另一個引用(這也不能解釋它們的作用)。

https://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_disable-keys

+0

部分代碼會禁用索引和外鍵檢查,以便數據庫對數據插入的順序不敏感。 – 2013-03-19 01:24:40

+0

在我看來,它存儲了DB('@ OLD_'部分)的一些配置信息,並將它們設置爲新值(沒有'@'的那些)。例如,請參閱「SET @ OLD_TIME_ZONE」,後面跟着「SET TIME_ZONE」。 '@ OLD_SQL_MODE'既存儲舊數據,又將新數據設置爲一行。 – 2013-03-19 01:28:02

回答

0

它創建表之前,你會發現和這樣你就會有這樣一行:

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 

再經過所有這些事情,你就會有這樣一行:

/*!40101 SET @[email protected]@OLD_CHARACTER_SET_CLIENT */; 

這些行所做的是保存數據庫的當前設置,將它們更改爲導入文件所需的內容,運行查詢,然後設置數據庫的設置b回到他們的方式。