MySQL转储文件和注释掉的行

Spo*_*ace 22 mysql mysqldump phpmyadmin

我将这些行放在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 */;
Run Code Online (Sandbox Code Playgroud)

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

Uni*_*ron 32

这些是针对某些版本的mySQL的条件注释.

这里这里:

  • MySQL版本的具体注释开始于 /*!
  • 结束 */
  • 版本号始终为5位数
  • 版本号的格式为主要版本号,次要版本号,版本号,主要版本为1位,次要版本为2位数,左侧填充0位
  • 特定于版本的注释将针对任何等于或高于列出的版本号的版本


Bol*_*ock 6

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

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