问题标签 [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.
c# - 根据字节长度缩短 UTF8 字符串的最佳方法
最近的一个项目要求将数据导入 Oracle 数据库。执行此操作的程序是 C# .Net 3.5 应用程序,我使用 Oracle.DataAccess 连接库来处理实际插入。
我遇到了一个问题,在插入特定字段时我会收到此错误消息:
ORA-12899对于列 X 的值太大
我使用过Field.Substring(0, MaxLength);
但仍然出现错误(尽管不是针对每条记录)。
最后我看到了应该很明显的东西,我的字符串是 ANSI,字段是 UTF8。它的长度以字节而不是字符定义。
这让我想到了我的问题。修剪我的字符串以修复 MaxLength 的最佳方法是什么?
我的子字符串代码按字符长度工作。是否有简单的 C# 函数可以通过字节长度智能地修剪 UT8 字符串(即不砍掉半个字符)?
oracle - ORACLE 捕获异常对象
嗨,有什么方法可以捕获在 ORACLE 中引发异常的对象(例如表和列)?
我需要确定对象名称以自定义错误消息,向用户显示发生异常的表和字段的名称。
我知道有一个变量 SQLCODE 和 SQLERRM,但我想知道是否有任何其他变量或函数可以返回错误对象的名称。
我想要这样的东西
更新
使用托尼的例子
实际上引发了这个错误 *
我想展示这样的东西
提前致谢。
c# - CHAR(1) 字段中的 ORA-12899 错误,但我只发送一个“C”
我的 Oracle 数据库返回错误:
ORA-12899 - 列 TIT.ESTADO_CIVIL 的值太大(实际值:2,最大值:1)
但我很确定发送的值是一个唯一的字符'C'。
任何人都知道为什么会这样?
(我在 ODP.NET 中使用 C#)
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) 列?
nhibernate - 流畅的 NHibernate 列表长度
我有一个列表,我试图进入数据库并提出以下断言:
我正在使用以下内容覆盖自动映射:
我确定我遗漏了一些简单的东西,但是有没有办法像你一样为列指定 .Length mapping.Map(x => x.StateLog).Length(2000);
?
提前致谢
编辑
使用以下约定,我可以将所有字符串更改为更大的 .Length,但这似乎不会影响 .Length 的类型IList<string>
。
有人知道一个可能有助于走公约路线的例子吗?
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)"
sql - 日期时间列 ORA 12899 的 Oracle SYSDATE 问题
我写了一个触发器,其中有一行:
由于某种原因,这不起作用(EVENTDATE 列具有 timestamp(0) 类型)。
当我尝试插入某些内容时,我收到错误消息,指出该列的值太长。我虽然 SYSDATE 和 timestamp(0) 会合并并相互理解。
什么?
unit-testing - 使用 Spring 3 @Transactional 注解时事务不回滚
我正在使用 Spring(3.0 版)'@Transactional' 注释来演示 Spring 中的事务支持,但无法使其正常工作(尽管在本论坛和其他技术论坛中看到了人们遇到的类似问题)。
这是我的 Spring 配置条目spring-application-context.xml
:
这是我的测试类中的事务方法:
抛出以下 SQL 异常(如我所料):
但是,在引发异常后,事务不会回滚,并且我可以看到在引发异常之前的先前数据库插入和更新已提交到FORMAT
表中:
在此异常之后,我本来希望看到没有任何东西提交给数据库。
有谁知道我哪里出错了,我在这里错过了一些关键概念吗?
任何帮助将不胜感激!
oracle - Delphi 获取 Oracle 错误 ORA-12899 列的错误值太大
我在 Oracle 中有一个数据库。客户端应用程序是用 Delphi 编写的。当我在连接到数据库中的表的 DBGrid 中输入值时,我得到“ORA-12899 列的错误值太大”。错误消息中指定的列的数据类型是 varchar(6)。而我正是输入 6 位。错误还表明最大值为 6,实际为 7,这是错误的。我尝试将数据类型更改为数字,但我得到相同的错误,只是说最大值为 3,实际为 4。是Delphi 和 Oracle 有 bug 吗?我使用 ADO 进行连接。BeforePost 事件中没有任何内容。
oracle - 对象表更新后 ORA-12899
第一个更新查询返回异常 ORA-12899,第二个在此表上执行时不返回:
第一次更新查询返回:
SQL 错误:ORA-12899:列“TA_1”的值太大。“V_2”(实际:1,最大值:0)
在表上禁用约束后,两个更新查询都有效。在 Oracle-XE 10g2 上测试。它是一个错误还是在某些 Oracle 手册中它是一个特性?