暂无图片
update 表中DECIMAL字段报ERROR 1264 (22003): Out of range value for column
我来答
分享
暂无图片 匿名用户
update 表中DECIMAL字段报ERROR 1264 (22003): Out of range value for column

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】5.7.25-OceanBase_CE-v4.1.0.0
【问题描述】
update 表中DECIMAL字段报ERROR 1264 (22003): Out of range value for column
【复现路径】
CREATE TABLE TEST (
ID varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
NAME varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
NUM decimal(2,2) DEFAULT NULL,
PRIMARY KEY (ID)
);

insert into test (id,name)
select ‘01’ as id,
‘测试1’ as name
union all
select ‘02’ as id,
‘测试2’ as name;

执行:
update oa.test set NUM = 1 where id = ‘01’
报 ERROR 1264 (22003): Out of range value for column ‘NUM’ at row 1


image【 使用环境 】生产环境

【 OB or 其他组件 】OB
【 使用版本 】5.7.25-OceanBase_CE-v4.1.0.0
【问题描述】
update 表中DECIMAL字段报ERROR 1264 (22003): Out of range value for column
【复现路径】
CREATE TABLE TEST (
ID varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
NAME varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
NUM decimal(2,2) DEFAULT NULL,
PRIMARY KEY (ID)
);

insert into test (id,name)
select ‘01’ as id,
‘测试1’ as name
union all
select ‘02’ as id,
‘测试2’ as name;

执行:
update oa.test set NUM = 1 where id = ‘01’
报 ERROR 1264 (22003): Out of range value for column ‘NUM’ at row 1

image
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

这个是符合预期的。
decimal(2, 2) 中第一个 2 的含义是说这个 decimal 整数位+小数位一共最多有两位有效数字,第二个 2 的含义是说这个 decimal 小数点儿后最多有两位有效数字,这样整数位最多就只有 2 - 2 = 0 位有效数字。所以这个 decimal(2, 2) 只能存绝对值小于 1 的小数,不能有整数位的。详见:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000222527 1
以下是原生 mysql 的行为:
mysql> create table t1(c1 decimal(2, 2));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t1 values(0.12);
Query OK, 1 row affected (0.01 sec)

mysql> insert into t1 values(1);
ERROR 1264 (22003): Out of range value for column 'c1' at row 1

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
生产环境 无法启动集群
回答 1
手动启动一下。默认路径cd/home/admin/oceanbase/&&./bin/observercd/home/admin/obproxy/&&./bin/obp
OceanBase磁盘读写超高
回答 1
OB的运行日志默认隔离级别是INFO,写的日志有点多。调整为ERROR后日志会少一些。此外日志写入也可以限速。你这个环境远远没有达到限速值。altersystemsetsysloglevel'ERRO
java.lang.IllegalArgumentException: Illegal argument for LogProxyClient
回答 1
oceanbase的cdcsql中少了有关rootserverlist的配置
oceanbase可以安装在国产操作系统上吗?例如银河麒麟
回答 1
已采纳
可以
oceanbase社区版本支持plsql吗?
回答 2
应该不支持,我记得只有企业版才兼容Oracle模式,社区版只支持mysql模式
OCP接管OBD部署的集群后,OBD可以删除吗
回答 1
可以的,OCP接管成功之后,最好只通过OCP来管理集群,因为现在两个管理工具是独立的,在一个工具中做的操作在另一个当中是不知道的,只用一个工具来管理就好了
使用limit查询插入会报重复值
回答 1
在orderby加上一个主键列
oceanbase多租户的概念与传统数据库用户的概念有什么本质的不同?
回答 1
看下文档介绍:https://www.oceanbase.com/docs/commonoceanbasedatabasecn1000000000033696 租户就是实例,只不过是“逻辑实
如果客户OceanBase同城和异地机房都是200M的专线,OB只是做三个集群,集群间做主备,需要扩容这200M的专线吗?
回答 1
1、先确认下你这个是一个集群三个zone分布在两个机房,还是三个集群?2、200M带宽一般是小b吧,也就是200/825MB。按80%的使用率算,也就是每秒最多能跑250.820MB日志传输。3、根据
以下哪一项不是 OceanBase 4.x 社区版的能力?
回答 2
已采纳
B高兼容,兼容MySQL语法功能和协议,底层实现依赖MySQL。分析:A、C、D三个选项都是OceanBase4.x社区版的能力。B选项中的“兼容MySQL语法功能和协议”部分是正确的,但是“底层实现