YashanDB 知识库|Oracle 里的大整数插入正常,换到崖山却报错? 问题可能出在字段类型上
【问题现象】
在将一张 Oracle 表迁移至 YashanDB 后,执行插入操作时报如下错误:
复制代码
而在 Oracle 中相同语句执行无误。为什么?


【根本原因】
这其实是 字段类型默认映射差异 所致。

1. INT 类型的最大值有限
YashanDB 遵循标准 SQL 类型规范:
复制代码
而报错中的数值是 16 位长整型,显然超出了 INT 类型的表示范围。

2. Oracle 的 INT ≠ 标准 INT
虽然 Oracle 中也支持 INT 写法,但实际上它会自动映射为 NUMBER 类型,精度更高,因此在 Oracle 中可以插入更大的整数。
例如:
复制代码
【解决方法】
修改字段类型为 BIGINT 或 NUMBER
为了兼容大整数建议统一使用以下字段定义:
复制代码
避免使用 INT 类型,尤其是在可能接收超过 10 位整数的场景中。
【迁移建议】
在从 Oracle 向 YashanDB 迁移时:

建议在迁移前,使用工具或脚本自动识别并调整超范围字段,避免插入报错。
【影响版本】
适用于 YashanDB 所有版本
【总结】
YashanDB 中 INT 是严格 32 位整数;
Oracle 的 INT 实际上通常是 NUMBER,支持大整数;
避免直接照搬字段类型,迁移时应注意数据精度范围;
建议统一使用 NUMBER 类型接收未知位数的整型字段。
评论