需求描述:
今天在進行mysqldump實驗,使用--add-drop-databases參數,於是在生成的SQL文件中,就出現了.
/*!40000 DROP DATABASE IF EXISTS `top_server`*/;這種類似於注釋的內容,查詢了一下
在這里記錄下.
操作過程:
1.使用--add-drop-database參數進行數據庫的備份
[mysql@redhat6 MysqlDb_Backup]$ mysqldump -uroot -p --single-transaction --master-data --flush-logs --add-drop-database --databases top_server test01 > Backup_Tables_2018-04-09.sql Enter password:
備注:使用--add-drop-database選項之后,就會在生成的SQL文件中增加drop database選項,即還原時先對DB進行刪除.
2.查看生成的SQL備份文件
-- MySQL dump 10.13 Distrib 5.5.57, for linux-glibc2.12 (x86_64) -- -- Host: localhost Database: top_server -- ------------------------------------------------------ -- Server version 5.5.57-log /*!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 */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Position to start replication or point-in-time recovery from -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000018', MASTER_LOG_POS=107; -- -- Current Database: `top_server` -- /*!40000 DROP DATABASE IF EXISTS `top_server`*/; #在SQL文件中增加了該語句,使用該文件還原時會先刪除數據庫. CREATE DATABASE /*!32312 IF NOT EXISTS*/ `top_server` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `top_server`; -- -- Table structure for table `dept` --
3.將/*!40000 DROP DATABASE IF EXISTS `top_server`*/;語句直接放到mysql控制台中執行
mysql> /*!40000 DROP DATABASE IF EXISTS `top_server`*/; Query OK, 62 rows affected (0.28 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test01 | | test02 | | test03 | | ziler | +--------------------+ 7 rows in set (0.00 sec)
備注:發現top_server數據庫已經被刪除了,說明這個SQL語句不是注釋是可以執行的語句.
4.經過查詢,發現該類似於注釋的語句的特點
注釋格式:
/*! MySQL-specific code */
備注:在注釋部分中的SQL語句就會被執行,注釋的開頭多了個嘆號.
另外,也可以在!號的后面加版本號
/*!version_number MySQL-specific code */
備注:此時版本號的作用是,只有當Mysql的版本大於等於這個版本號的時候,注釋中的SQL語句才會被執行
小結:
/*! MySQL-specific code */ 這種注釋是mysql注釋中的特殊一種,通過使用嘆號在注釋中,注釋中的代碼就會被執行.
在本例子中,只有當Mysql Server的版本大於Mysql 4的時候,這個語句才能被執行.
文檔創建時間:2018年4月9日17:50:38
