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

相关文章

sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符

《sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符》:本文主要介绍sqlserver、mysql、oracle、pgsql、sqlite五大... 目录一、转义符1.1 oracle1.2 sqlserver1.3 PostgreSQL1.4 SQLi

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法

《Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法》本文解析Spring框架中BeanCreationExce... 目录引言一、问题描述1.1 报错示例假设我们有一个简单的Java类,代表一个用户信息的实体类:然后,

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe