SQL 错误 [1460] [72000]: ORA-01460: 转换请求无法实现或不合理

一、问题

使用连接工具连接Oracle9i Enterprise Edition ,连接工具(DBever,Navicat Premium 15,星环的WoterDrop等)都尝试了,连接成功后查看表发现出现:

SQL 错误 [1460] [72000]: ORA-01460: 转换请求无法实现或不合理;  ORA-01460: 转换请求无法实现或不合理; oracle.jdbc.OracleDatabaseException: ORA-01460: 转换请求无法实现或不合理;    ORA-01460: 转换请求无法实现或不合理

这个错误,截图如下:

SQL 错误 [1460] [72000]: ORA-01460: 转换请求无法实现或不合理_第1张图片

二、分析及解决

这个问题卡住了很久,寻找了诸多的方法,均难以解决,结合网络搜集的资料和各个大牛的解决办法,我做了尝试,对尝试结果进行总结如下:

                S1、超过最大字段长度,当输入值长度超oracle最大长度4000时会出现。

                S2、连接驱动不适配,驱动问题出现的可能性很大,需要找对应版本的连接驱动。

                S3、字符集不匹配的问题。

1、对于S1,我不做写数据库的操作,只需要查询数据表,所以不是该原因造成。如果在写入数据库出现此问题,建议修改最大字符长度;

2、对于S2,由于驱动版本问题,导致连接成功,但不能查看数据表空间的概率最大,需要查看自己的数据库版本,选择合适的驱动

几个版本的oracle对应的JDBC驱动对应如下:

        Oracle 9i 的JDBC驱动:


classes111.jar  适用于JDK 1.1.x
classes12.jar   适用于JDK 1.2 and JDK 1.3
ojdbc14.jar     适用于JDK 1.4    (我的环境是windos10,JDK1.8,ORACLE9i连接使用该驱动没问题)
classes111.zip  适用于JDK 1.1.x
classes12.zip   适用于JDK 1.2.x

        Oracle10g JDBC驱动 

classes12.jar  适用于JDK 1.2 and JDK 1.3
ojdbc14.jar    适用于 JDK 1.4 and JDK 1.5

         Oracle11 JDBC驱动

ojdbc5.jar:   适用于JDK 1.5
ojdbc6.jar:   适用于JDK 1.6

更多版本的驱动可以官网查询,新发布的oracle支持更新的JDK,其驱动版本也更容易查找。

        3、对于 S3字符集不匹配的问题。我的解决办法参考了一些博主的解决方案。通过SQL查询数据库服务器的字符集:

/*查询数据库版本*/
select * FROM product_component_version
/*查询数据库字符集*/
select * from V$NLS_PARAMETERS
where parameter in('NLS_LANGUAGE','NLS_ISO_CURRENCY','NLS_CHARACTERSET');

SQL 错误 [1460] [72000]: ORA-01460: 转换请求无法实现或不合理_第2张图片

 然后修改注册表:通过regedit修改注册表(我的是windows10:win+r,regedit,回车)进行客户端的字符集,位置/HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/

如果有HOME0项目,修改NLS_LANG的值为:[NLS_LANGUAGE ]_[NLS_ISO_CURRENCY].[NLS_CHARACTERSET]

如果没有,就自行添加该项和字符集。

SQL 错误 [1460] [72000]: ORA-01460: 转换请求无法实现或不合理_第3张图片

每个方法都逐一尝试,祝成功。 

你可能感兴趣的:(sql,oracle,数据库)