【问题标题】:MySQL dump file and commented out linesMySQL 转储文件和注释掉的行
【发布时间】:2011-03-16 11:41:34
【问题描述】:

我在 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 会忽略它们吗?如果是这样,为什么要生成这些行?

【问题讨论】:

    标签: mysql phpmyadmin mysqldump


    【解决方案1】:

    这些是针对特定版本的 mySQL 的条件 cmets。

    来自herehere

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

    【讨论】:

    • @Unicron 可能并不总是针对特定版本,因为我尝试用mysql视图转储文件,该视图定义为注释掉,与mysql版本无关。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 2020-01-06
      • 2013-01-08
      • 2011-06-01
      • 2014-06-08
      • 2015-03-17
      • 2017-06-02
      • 2011-02-04
      • 2015-12-23
      相关资源
      最近更新 更多