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: 转换请求无法实现或不合理

这个错误,截图如下:

二、分析及解决

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

                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');

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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 原因:Java程序在执行SQL语句时发现表或视图不存在,导致抛出了java.sql.SQLSyntaxErrorException: ORA-00942异常。 可能的原因包括: 1. 数据库中确实不存在该表或视图; 2. 表或视图名称拼写错误; 3. 用户没有访问该表或视图的权限; 4. 数据库连接配置错误。 需要检查以上可能的原因,确保表或视图存在且名称拼写正确,用户有访问权限,并且数据库连接配置正确。 ### 回答2: 这是一个 Oracle 数据库系统的 SQL 语法错误,提示中指出了表或视图不存在。这意味着当前执行的 SQL 语句中引用了一个不存在的表或视图。 在 Oracle 数据库中,表和视图是很重要的数据库对象,它们存储了实际的数据和数据定义。如果 SQL 查询或操作要使用表或视图,首先我们必须确保这些表或视图确实存在并且已经被正确的创建、定义和加载数据。 当系统执行 SQL 语句,如果其中引用了一个不存在的表或视图,就会产生 "java.sql.sqlsyntaxerrorexception: ora-00942: 表或视图不存在" 这个错误。这种情况通常会发生在以下情况: 1. 拼写错误:在 SQL 中表名或视图名的拼写错误,例如大小写错误或少打了一个字母。 2. 对象名更改:在 SQL 中使用的表或视图名称已被更改或删除。 3. 没有权限:在 SQL 语句中引用的表或视图是另一个用户创建的对象,并且当前用户没有访问该对象的权限。 要解决此问题,我们需要检查 SQL 语句中是否存在拼写错误,确认表或视图是否存在并且是否拥有访问权限。如果这些都已经确认没有问题,那么可能是由于更深层次的数据库问题导致问题的产生,此时需要进行更深入的故障排除。 ### 回答3: 本错误的产生是由于访问了一个不存在的表或视图。在Java应用程序中,该错误通常是由于SQL查询语句中的表或视图名称错误或被错误地输入所致。 “ORA-00942:表或视图不存在”是Oracle数据库的一个错误代码,指出用户试图查询一个不存在的表或视图。 在处理该错误时,我们应该首先检查SQL语句是否正确,确认没有拼写错误或其他语法错误,并确保查询的表或视图确实存在于数据库中。如果查询的表或视图不存在,我们需要创建该表或视图,并重新执行查询操作。 除了上述方法外,我们还可以通过查看数据库的日志来确定错误原因。在日志中,我们可以找到更多关于查询语句和错误代码的详细信息。 在编写Java应用程序时,我们还可以使用调试工具来确定错误原因。通过打印SQL查询语句和数据库返回的错误代码,我们可以更快地诊断并解决问题。 总的来说,Java.sql.sqlsyntaxerrorexception: ora-00942是一种常见的错误,通常是由于应用程序中的错误SQL语句所导致的。我们可以通过检查语句的语法、确保所查询的表或视图存在、查看数据库日志以及使用调试工具来解决这一问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值