我导出的SQL文件包含以下行:
/*!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 */;与CREATE TABLE和INSERT INTO不同,这几行是什么意思
发布于 2011-06-07 21:34:23
他们是variable assignments。赋值是wrapped in executable comments的方式,当使用MySQL时,它们将被执行,如果使用其他关系型数据库,它们将被单独执行。此外,40101指示注释不会被保留在数据库中,即,如果行被执行,则它们仅在执行sql文件时被执行。
发布于 2011-06-07 21:35:15
这是包含在条件注释中的变量赋值。代码的执行取决于所讨论的MySQL版本,请参见comments
发布于 2018-11-22 14:40:31
在查看https://dev.mysql.com/doc/refman/8.0/en/comments.html文档后,这些特殊的注释总是让我感到困惑
如果在!后面添加版本号,则为
。字符,则仅当MySQL版本大于或等于指定的版本号时,才执行注释中的语法。以下注释中的KEY_BLOCK_SIZE关键字仅由MySQL 5.1.10或更高版本的服务器执行:
创建表t1(a INT,KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;
这并不难理解。在50110版本中,意味着5(主要)01(次要)10(修订)=在MySQL版本>= 5.1.10或更高版本中运行
https://stackoverflow.com/questions/6265891
复制相似问题