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

相关文章

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

ora-01017 ora-02063 database link,oracle11.2g通过dblink连接oracle11.2g

错误图示: 问题解决 All database links, whether public or private, need username/password of the remote/target database. Public db links are accessible by all accounts on the local database, while private

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co