问题标签 [ora-12899]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
12647 浏览

c# - 根据字节长度缩短 UTF8 字符串的最佳方法

最近的一个项目要求将数据导入 Oracle 数据库。执行此操作的程序是 C# .Net 3.5 应用程序,我使用 Oracle.DataAccess 连接库来处理实际插入。

我遇到了一个问题,在插入特定字段时我会收到此错误消息:

ORA-12899对于列 X 的值太大

我使用过Field.Substring(0, MaxLength);但仍然出现错误(尽管不是针对每条记录)。

最后我看到了应该很明显的东西,我的字符串是 ANSI,字段是 UTF8。它的长度以字节而不是字符定义。

这让我想到了我的问题。修剪我的字符串以修复 MaxLength 的最佳方法是什么?

我的子字符串代码按字符长度工作。是否有简单的 C# 函数可以通过字节长度智能地修剪 UT8 字符串(即不砍掉半个字符)?

0 投票
3 回答
3734 浏览

oracle - ORACLE 捕获异常对象

嗨,有什么方法可以捕获在 ORACLE 中引发异常的对象(例如表和列)?

我需要确定对象名称以自定义错误消息,向用户显示发生异常的表和字段的名称。

我知道有一个变量 SQLCODE 和 SQLERRM,但我想知道是否有任何其他变量或函数可以返回错误对象的名称。

我想要这样的东西

更新

使用托尼的例子

实际上引发了这个错误 *

我想展示这样的东西

提前致谢。

0 投票
2 回答
2816 浏览

c# - CHAR(1) 字段中的 ORA-12899 错误,但我只发送一个“C”

我的 Oracle 数据库返回错误:

ORA-12899 - 列 TIT.ESTADO_CIVIL 的值太大(实际值:2,最大值:1)

但我很确定发送的值是一个唯一的字符'C'。

任何人都知道为什么会这样?

(我在 ODP.NET 中使用 C#)

0 投票
2 回答
18688 浏览

substring - 如何使用 SQL*Loader 截断数据以适合字段?(ORA-12899)

使用 Oracle SQL*Loader,我试图将另一个数据库中的可变长度字符串 (lob) 列加载到 Oracle 中的 varchar2(4000) 列中。我们有超过 4000 个字符的字符串,但每个人都同意这些字符串可以而且应该在迁移中被截断(我们已经查看了超过 4000 个字符的数据,它没有意义)。为此,我在控制文件中以这种方式指定了该列:

但是,SQL*Loader 仍然拒绝数据文件中这条记录超过 4000 个字符的任何行:

记录 6484:拒绝 - 表 LOG_COMMENT 列 COMMENTS 上的错误。ORA-12899: COMMENTS 列的值太大(实际值:11477,最大值:4000)

记录 31994:拒绝 - 表 LOG_COMMENT 列 COMMENTS 上的错误。ORA-12899: COMMENTS 列的值太大(实际值:16212,最大值:4000)

记录 44063:拒绝 - 表 LOG_COMMENT 列 COMMENTS 上的错误。ORA-12899: COMMENTS 列的值太大(实际值:62433,最大值:4000)

我尝试采用更小的子字符串,但仍然出现相同的错误。如何更改我的控制文件以将超过 4000 个字符的字符串数据截断为 varchar2(4000) 列?

0 投票
1 回答
673 浏览

nhibernate - 流畅的 NHibernate 列表长度

我有一个列表,我试图进入数据库并提出以下断言:

我正在使用以下内容覆盖自动映射:

我确定我遗漏了一些简单的东西,但是有没有办法像你一样为列指定 .Length mapping.Map(x => x.StateLog).Length(2000);

提前致谢

编辑

使用以下约定,我可以将所有字符串更改为更大的 .Length,但这似乎不会影响 .Length 的类型IList<string>

有人知道一个可能有助于走公约路线的例子吗?

0 投票
6 回答
138085 浏览

sql - SQL Error: ORA-12899: value too large for column

I have created the following table

And I am currently trying to use the INSERT VALUES statement. I have written the following statement

When I try to run the statement it gives me the following error message.

Error starting at line 4 in command: INSERT INTO Customers VALUES(501623129, 'David Patterson', '30 Singleton Close London', 'SW17 9JY', 02082860642) Error report: SQL Error: ORA-12899: value too large for column "DJ"."CUSTOMERS"."ADDRESS" (actual: 25, maximum: 20) 12899. 00000 - "value too large for column %s (actual: %s, maximum: %s)"

0 投票
5 回答
2166 浏览

sql - 日期时间列 ORA 12899 的 Oracle SYSDATE 问题

我写了一个触发器,其中有一行:

由于某种原因,这不起作用(EVENTDATE 列具有 timestamp(0) 类型)。

当我尝试插入某些内容时,我收到错误消息,指出该列的值太长。我虽然 SYSDATE 和 timestamp(0) 会合并并相互理解。

什么?

0 投票
1 回答
3536 浏览

unit-testing - 使用 Spring 3 @Transactional 注解时事务不回滚

我正在使用 Spring(3.0 版)'@Transactional' 注释来演示 Spring 中的事务支持,但无法使其正常工作(尽管在本论坛和其他技术论坛中看到了人们遇到的类似问题)。

这是我的 Spring 配置条目spring-application-context.xml

这是我的测试类中的事务方法:

抛出以下 SQL 异常(如我所料):

但是,在引发异常后,事务不会回滚,并且我可以看到在引发异常之前的先前数据库插入和更新已提交到FORMAT表中:

在此异常之后,我本来希望看到没有任何东西提交给数据库。

有谁知道我哪里出错了,我在这里错过了一些关键概念吗?

任何帮助将不胜感激!

0 投票
1 回答
911 浏览

oracle - Delphi 获取 Oracle 错误 ORA-12899 列的错误值太大

我在 Oracle 中有一个数据库。客户端应用程序是用 Delphi 编写的。当我在连接到数据库中的表的 DBGrid 中输入值时,我得到“ORA-12899 列的错误值太大”。错误消息中指定的列的数据类型是 varchar(6)。而我正是输入 6 位。错误还表明最大值为 6,实际为 7,这是错误的。我尝试将数据类型更改为数字,但我得到相同的错误,只是说最大值为 3,实际为 4。是Delphi 和 Oracle 有 bug 吗?我使用 ADO 进行连接。BeforePost 事件中没有任何内容。

0 投票
1 回答
522 浏览

oracle - 对象表更新后 ORA-12899

第一个更新查询返回异常 ORA-12899,第二个在此表上执行时不返回:

第一次更新查询返回:

SQL 错误:ORA-12899:列“TA_1”的值太大。“V_2”(实际:1,最大值:0)

在表上禁用约束后,两个更新查询都有效。在 Oracle-XE 10g2 上测试。它是一个错误还是在某些 Oracle 手册中它是一个特性?