jdbc连接tidb5.1.1连接报异常 只读场景

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

  • 【TiDB 版本】:v5.1.1
    tikv v5.1.1
    pd v5.1.1
    tidb v5.1.1
  • 【问题描述】:从v5.0.3 升级到v5.1.1后 spark 报:
    java.sql.SQLSyntaxErrorException: function READ ONLY has only noop implementation in tidb now, use tidb_enable_noop_functions to enable these functions
    直接set global tidb_enable_noop_functions=1; 之后就恢复了 。 这个设置是必须的吗?
    只读场景会报这个问题
1 个赞

初步判断应该是语法兼容性问题,建议对应的 log 看一下。这个参数可以忽略部分语法报错,但是要确认一下具体哪些 SQL 出现语法问题。

https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_enable_noop_functions-从-v40-版本开始引入

跟sql语法无关 , 就是 在只读业务场景会出现这个问题 。多点也是只读业务场景报这个异常 。

是的,这个是预期的。这么做的目的,是显式提醒 ‘read_only’ 变量在 TiDB 中并不真正生效(即属于 ‘noop’ 行为)。

举个例子,对于只读业务,我们一般在 MySQL 中设置 ‘read_only’ 系统变量让系统变为只读模式。但在 TiDB 中即便设置了这个变量,集群仍然是可写的。

将来我们计划支持真正的只读模式,到那时 read_only 会被移出 ‘tidb_enable_noop_functions’ 的控制。

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