这两个不同的 ORA 错误(ORA-12899 和 ORA-01461)如何链接在一起

Posted

技术标签:

【中文标题】这两个不同的 ORA 错误(ORA-12899 和 ORA-01461)如何链接在一起【英文标题】:How these two different ORA errors (ORA-12899 & ORA- 01461) are linked together 【发布时间】:2017-11-09 19:36:31 【问题描述】:

当我在 oracle 表中插入超过定义的 varchar 列大小的字符串时,会导致以下 ORA 错误。第一个“ORA-12899”非常容易理解并给出了正确的信息。但有时在我的应用程序中,出于同样的原因,我得到了不同的错误,即 ORA-01461,它说“ORA-01461 - 只能绑定 LONG 值以插入 LONG 列提示”。这个错误说明了非常不同的原因,但我只有 varchar 列并插入超过定义大小的字符串。不确定 LONG 值在哪里出现。我也在link 上发现了类似的东西。

ORA-12899 - Value too Large for Column
ORA- 01461 - can bind a LONG value only for insert into a LONG column tips

看起来像link 中提到的关于 oracle 缓存的第二个 ORA 错误。有人可以分享一下这两个错误的确切区别是什么,为什么有时我会因为同样的原因得到它们中的任何一个?如果我将字符串插入最大大小超过定义的 varchar 列,我通常会得到相同的错误。

【问题讨论】:

【参考方案1】:

第一个是关于插入值的 SIZE(例如字符数),这意味着目标列对于插入值来说不够宽,但第二个是关于将 LONG 数据类型中的值插入到不同的数据类型中。

【讨论】:

以上是关于这两个不同的 ORA 错误(ORA-12899 和 ORA-01461)如何链接在一起的主要内容,如果未能解决你的问题,请参考以下文章

oracle跨平台数据迁移 expdp/impdp 字符集问题 导致ORA-02374 ORA-12899 ORA-02372

oracle导入失败,超出长度

修改Oracle字符集

oracle常用操作

运行 DBMS_COMPARISON.CONVERGE 子程序时出现错误 ORA-00942

ORA-01001 无效游标错误