Oracle ORA-12899 报错

2023-10-31 00:30
文章标签 oracle 报错 ora 12899

本文主要是介绍Oracle ORA-12899 报错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 结论:ORA-12899 报错是插入的数据超出字段的设置长度导致的,实际插入的数据长度并不长,是因为Oracle字符集不同,汉字占用的长度不同导致的。解决办法一是增加字段长度,二是修改字符集。如果表中已经存有数据,修改字符集会导致表中原有数据中的汉字乱码,所以要先导出数据,再修改字符集,然后再把数据导入表中。下面讲一下我今天的处理方式


今天update时报错  ORA-12899,说数据长度是277,表字段长度是255,超长报错了

我们是有一张表在两个系统中同时存在,数据需要同步保持一致。现在在a数据库中update报错  ORA-12899,但是在数据库b中却保存成功,我首先检查了两张表的字段长度:
查询表字段长度:
  describe  a数据库名.表名;
  describe  b数据库名.表名;

经过检查,两张表的name字段长度都是255,我用sql查询和System.out.println()输出后发现,我update的值是99,根本没有超过255

 

 然后我开始检查字符集,检查字符集的方式有多种,正常情况下都是用数据库连接工具查看,因为我们的项目对数据库管理严格,所有数据库都不能使用连接工具,所以我只能用我能查到的方式来查,至于连接工具查看字符集的方式,大家先自行百度吧,我后期看情况补上

查看数据库字符集

使用sql语句通过系统视图Nls_Database_Parameters查看数据库的系统参数。
SELECT * FROM Nls_Database_Parameters 

进一步添加条件过滤出于字符集相关的记录、可以看到字符集的信息。
SELECT * FROM Nls_Database_Parameters where parameter in ('NLS_LANGUAGE','NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET')

 前面的步骤是查看数据库的字符集,如果要查看本机客户端的字符 还可以用Userenv函数查看客户端字符集。

  SELECT Userenv('language') FROM dual

因为我们a数据库这张表现有二十多万条数据,改字符集不现实,所以我选择修改字段长度,将长度改为300

  alter table a数据库名.表名 modify  字段名  varchar2(300);

修改字段长度后,我重新update就成功了

这篇关于Oracle ORA-12899 报错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/311581

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

Python报错ModuleNotFoundError的10种解决方案

《Python报错ModuleNotFoundError的10种解决方案》在Python开发中,ModuleNotFoundError是最常见的运行时错误之一,通常由模块路径配置错误、依赖缺失或命名冲... 目录一、常见错误场景与原因分析二、10种解决方案与代码示例1. 检查并安装缺失模块2. 动态添加模块

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最

解决Maven项目报错:failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题

《解决Maven项目报错:failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题》这篇文章主要介... 目录Maven项目报错:failed to execute goal org.apache.maven.pl

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包