【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】5.7.25-OceanBase_CE-v4.3.5.2
【问题描述】已设置sql_mode中包含STRICT_TRANS_TABLES和STRICT_ALL_TABLES,使用INSERT插入数据时,对INT字段插入小数或对DECIMAL插入更多小数数位,会自动四舍五入。
【复现路径】
sql_mode:
select @@sql_mode;
PIPES_AS_CONCAT,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
建表语句:
create table testint(x int);
create table testdecimal (x decimal(5,2));
插入语句:
insert into testint values (23.11);
insert into testdecimal values (45.1111);[会输出warning:Data truncated for column ‘x’ at row 1]
查询结果:
@论坛小助手
有什么解决办法直接报错嘛而不是自动四舍五入嘛?
1 个赞
论坛小助手
#3
在这个问题中,用户提到的是关于 SQL 模式设置与预期行为不符的情况。但是,根据您提供的问题,obdiag
工具可能并不直接适用于这种情况,因为 obdiag
主要用于收集日志和分析性能或系统故障类问题,而您遇到的问题更倾向于配置和行为理解上的问题。
不过,我们可以尝试通过日志收集来检查是否有关于 SQL 模式配置的警告或错误信息,这可能会帮助我们进一步了解为什么 SQL 模式的设置没有按照预期工作。
日志采集场景: SQL 执行出错
日志采集命令: obdiag gather scene run --scene=observer.sql_err --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”
请您执行上述命令,并将生成的日志文件提供给我们。同时,为了更好地帮助您解决这个问题,请您回答以下问题:
- 您当前使用的 OceanBase 版本是什么?
- 您是如何设置
sql_mode
的?是在全局设置还是针对特定的会话设置?
- 您可以提供一个具体的例子,展示哪些数据被四舍五入,以及您期望的行为吗?
- 您是否有查看过 OceanBase 的官方文档或社区论坛,尝试找到类似的解决方案?
通过这些问题的回答,我们可以更准确地定位问题所在,并为您提供更有效的帮助。
附上敏捷诊断工具 obdiag 使用帮助链接
1 个赞