3

查看 mysqldump 的输出,我在顶部看到以下内容。

同样地,我在 /*! 中看到各种语句。*/ 块。我的猜测是这些可能是根据版本有条件地执行的,但不幸的是,随着谷歌剥离符号,很难确认这一点。

/*!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 */;

这是 MySQL 手册中对这些语句的另一个参考(也没有解释它们的作用)。

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

4

1 回答 1

1

在它创建表之前你会注意到,这样你就会有这样的一行:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

然后在所有这些事情之后,你会有这样的一行:

/*!40101 SET @CHARACTER_SET_CLIENT=@@OLD_CHARACTER_SET_CLIENT */;

这些行所做的是保存数据库的当前设置,将它们更改为导入文件所需的内容,运行查询,然后将数据库的设置设置回原来的状态。

于 2013-04-05T22:26:32.063 回答