我刚刚意识到sql文件中有一些行(.sql
),它们以/*!
开头并且不是注释,而是执行它们来执行一些系统级任务。
我想知道以/*!
开头的行对于 MySQL 真正意味着什么,以及为什么在符号旁边使用该数字(在我的示例中为4000)。
以下是示例:
/*!40000 ALTER TABLE `my_table` DISABLE KEYS */;
INSERT INTO my_table VALUES ('value1','value2');
/*!40000 ALTER TABLE `my_table` ENABLE KEYS */;
修改 根据{{3}},我不认为这个问题是重复的。这个问题是关于MySQL如何对待它的。它没有询问如何删除这些注释,并且该问题并未将其视为对MySQL的评论。
答案 0 :(得分:13)
这些行被任何其他RDBMS视为MySQL的注释。但是MySQL会执行它们。
这将在SQL文件中启用MySQL特定的关键字或语法,而不会破坏其他系统。
该数字代表您定位的版本,例如/*!32302 TEMPORARY */
只能由MySQL 3.23.02或更高版本执行。
有关详细信息,请查看the docs:
MySQL Server支持一些C风格的评论变体。这些启用 你编写包含MySQL扩展的代码,但仍然是 便携式,使用以下形式的评论:
/*! MySQL-specific code */
在这种情况下,MySQL Server解析和 像任何其他SQL一样执行注释中的代码 声明,但其他SQL服务器将忽略扩展。对于 例如,MySQL Server识别出STRAIGHT_JOIN关键字 以下声明,但其他服务器不会:
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...