TIDB注释语法

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v3.0.12
  • 【问题描述】:

按照官网的描述:

TiDB 也跟 MySQL 保持一致,支持一种 C 风格注释的变体:

/*! Specific code */

在这种格式中,TiDB 会执行注释中的语句,这个语法是为了让这些 SQL 在其他的数据库中被忽略,而在 TiDB 中被执行。

实际测试中:这种注释方式在mysql中也会执行。这里能做到只是tidb执行,mysql不执行么?

1 个赞

你好,

可否提供下测试语句和效果,及其 mysql 和 tidb 的版本,这边复现下。

tidb是3.0.12,mysql是5.7.26。

语句是

/*! select version() */

我看文档描述的意思,好像就是3.0版本里,两边共用相同的注释逻辑。

/*! xxx */ 本来是 MySQL 特有的注释语法,TiDB 为了兼容 MySQL,也会解析这种语法。 https://dev.mysql.com/doc/refman/8.0/en/comments.html

如果想让 TiDB 执行,MySQL 不执行,可以使用 TiDB 特有的注释语法:/*T! select version(); */

文档描述得不够清楚,稍后我们会作出修正,感谢反馈!

这个是3.0以上版本才支持吧,3.0版本执行/*T! select version(); */语句时,comment也不执行。

/*!90000 select version(); */ 能否满足需求呢?

稍等我试一下

完美!感谢

:call_me_hand:感谢测试使用。。。

1 个赞

越玩越高能了,现在要对不同客户的不同业务采取不同集群了,大客户tidb,小客户mysql,一套代码,要兼容两种写法

:call_me_hand::call_me_hand::call_me_hand:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。