sql_mode: STRICT_TRANS_TABLES 无法移除?

【 TiDB 使用环境】测试

【 TiDB 版本】6.1.0
【复现路径】

show variables like 'sql_mode';
Variable_name Value
sql_mode STRICT_TRANS_TABLES
set global sql_mode = 'ORACLE';

重新连接TiDB

show variables like 'sql_mode';
Variable_name Value
sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,ORACLE,STRICT_TRANS_TABLES

发现 STRICT_TRANS_TABLES 仍处于配置中

【遇到的问题:问题现象及影响】
无法移除 STRICT_TRANS_TABLES,导致不能自动裁剪数值精度

SHOW GLOBAL VARIABLES LIKE ‘sql_mode’;看看

set global sql_mode = 'ORACLE';

重新连接 TiDB

show variables like 'sql_mode';
Variable_name Value
sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,ORACLE,STRICT_TRANS_TABLES
show global variables like 'sql_mode';
Variable_name Value
sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,ORACLE

为什么 session 里面的最后面会有 STRICT_TRANS_TABLES 但是 global 里面没有。。


我看了看我的,没有

1 个赞

刚刚解决了,原因是因为我们用的JDBC,会自动添加 STRICT_TRANS_TABLES SQL_MODE
MySQL Bugs: #23371: Automatic append of STRICT_TRANS_TABLES to the sql_mode.
需要设置 JDBC URL 参数 jdbcCompliantTruncation=false

我说呢,解决就挺好

1 个赞

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