MySQL转储文件和注释掉的行

时间:2010-07-15 15:28:28

标签: mysql phpmyadmin mysqldump

我在MySQL .sql文件的顶部有这些行(用phpMyAdmin转储):

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

但他们似乎都被评论出来了。那么,当文件被加载回数据库时,MySQL会忽略它们吗?如果是这样,为什么要生成这些行呢?

2 个答案:

答案 0 :(得分:31)

这些是针对某些版本的mySQL的条件评论。

来自herehere

  • MySQL版本特定评论以/*!
  • 开头
  • */
  • 结尾
  • 版本号始终为5位数
  • 版本号的格式为主要版本号, 次要版本号,修订号,主要是1位数 并且次要和修订是2位左边用0的
  • 填充
  • 特定于版本的评论将针对任何等于或高于的版本  列出的版本号

答案 1 :(得分:6)

MySQL 解析并执行这些代码行,我相信本地化和字符编码的东西,因为评论以/*!(带感叹号)而不仅仅是C风格的/*

可以像使用条件注释和Internet Explorer一样考虑它。 <!--[if IE]><![endif]-->看起来像是对其他浏览器的任何普通旧HTML评论,但IE会识别此特殊注释并根据需要对其进行分析。同样,/*! */看起来像对其他SQL DBMS的任何其他注释,但对MySQL来说是特殊的。