题记:
很奇怪哈,发表文章怎么有丢失,编辑的时候好好的,点击发布后就会丢失一部分信息,iteye怎么回事?
正文:
昨天工作中碰到这么一个error, oracle存入某个varchar2(4000)的数据时报的,
java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into
查了很多资料,也是众说纷纭,不过还是找到了答案,这个比较靠谱:
真正的原因是,超过了4k的字符数据,会被oracle直接转换成long型数据插入数据库,因为varchar2不能存储超过4k的数据,这个转化是为了减少认为的设置或者当初设计不当造成的错误。
我们不能出了错误先怪工具,自己不知道原理,结果是自己用错了东西造成的错误。
这里的4k,说的是字节数,但是,比如汉字,在数据库选择zhs16gbk的时候,会使用两个字节来存一个汉字,所以,你的汉字超过2k的时候,实际需要的存储字节就超过了4k,这时候,varchar2类型当然不够空间了,oracle就执行了把这段字符数据向long型数据的转化。而在表结构上,就出现了“向一个varchar2型数据列插入一个long型数据”,当然就报错了!
“can bind a LONG value only for insert into a LONG column ”提示也说的很清楚,“只能把long型数据插入一个long型数据列”。当然不能“把long型数据插入到xx(非long)数据列”了
Oracle驱动的版本不对,如果你的JDK版本是1.2 1.3的,那就检查你的驱动包classes12.jar的版本是否与数据库版本一致,如果你的JDK是更高版本的,检查你的驱动包classes12.jar或ojdbc14.jar或ojdbc5.jar或ojdbc6.jar是否与数据库版本一致,换成一致的就OK了!
参考链接:
ojdbc版本区别 ojdbc14.jar ojdbc5.jar ojdbc6.jar
http://blog.csdn.net/cooljun618/article/details/6929553
Oracle驱动classes12.jar 与ojdbc14.jar
http://applelini.blog.163.com/blog/static/9865278020118284827234/
分享到:
相关推荐
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
- `java.sql.SQLException: ORA-00060: deadlock detected while waiting for resource`: 两个或多个事务因相互等待对方释放资源而陷入死锁。通过死锁检测工具或优化事务处理逻辑来解决。 9. **权限问题** - `...
java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……
在Oracle数据库系统中,"ORA-00060: 等待资源时检测到死锁" 是一个常见的错误提示,它表明两个或多个事务在执行过程中陷入了无法继续进行的状态,因为彼此都在等待对方释放资源。这种情况通常发生在并发操作中,比如...
标题中的“Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装”是一个典型的错误信息,表明在尝试使用Java数据库连接(JDBC)驱动程序访问数据库时...
在Java编程中,`java.sql.SQLException: 结果集已耗尽` 是一个常见的错误提示,通常出现在处理数据库查询结果集时。这个异常表明程序试图访问已经没有数据的结果集中下一行,即所有行已经被遍历完,尝试访问超出范围...
### 服务器出现java.sql.SQLException No suitable driver found for 的解析与解决方案 #### 问题背景 在进行Servlet开发过程中,尤其是在尝试连接数据库时,遇到了一个常见的异常:“java.sql.SQLException: No ...
Microsoft提供了适用于Java的JDBC驱动,名为"Microsoft JDBC Driver for SQL Server",它支持Type 4,允许Java应用程序直接与SQL Server进行通信。安装后,通过`Class.forName()`加载驱动,并使用`DriverManager....
在Oracle数据库管理中,"ORA-28001 the password has expired" 是一个常见的错误,它表明数据库用户的密码已经超过了预设的有效期限,导致用户无法正常登录。这个错误主要出现在Oracle 11G及更高版本中,因为这些...
Oracle ORA 异常处理详解 Oracle 是一个强大的关系数据库管理系统,然而,在使用 Oracle 时,总是会遇到各种错误信息,这些错误信息是Oracle抛出的异常信息,用于提示开发者出现了什么问题。了解这些错误信息是...
"ora-dba.rar" 是一个专门针对Oracle数据库管理的实用工具集合,对于数据库开发者和管理员而言,它提供了全面的功能,极大地简化了日常的数据库管理和优化任务。这个工具集的使用不仅可以提升工作效率,还能帮助DBA...
### ORA-01157 错误详解与解决方案 #### 错误代码与含义 ORA-01157 错误是 Oracle 数据库中一个常见的错误代码,其全称是:“ORA-01157: 无法识别/文件 - DBWR 文件”。这个错误通常发生在数据库启动过程中,当...
Q: I am working with ... I am using updateBinaryStream method of resultset to update the BLOB field but it is failing after giving following exception java.sql.SQLException: Internal Error: Unable to
在Java中,当我们需要通过JDBC(Java Database Connectivity)接口与Oracle数据库交互时,处理CLOB字段可能会遇到一些挑战。这篇文档将详细阐述如何在JDBC中有效地读取和操作Oracle数据库的CLOB字段,并将其转换为...
它实现了Java Database Connectivity (JDBC) API,使得开发者可以使用Java语言来操作Oracle数据库,执行SQL语句,进行数据查询、插入、更新和删除等操作。Oracle JDBC驱动分为不同版本,包括 Thin、OCI、JDBC-ODBC ...
Caused by: java.sql.SQLException: java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver at com.trs.gateway.commons.hive.HiveFeature.getConnection(HiveFeature.java:57) at ...
1. **共享池(Shared Pool)**:用于缓存最近执行的SQL语句和数据定义,包括库缓存和数据字典缓存。 2. **数据缓冲区(Database Buffer Cache)**:缓存从数据文件中检索的数据块,显著提升读写性能。 3. **日志缓冲...
针对“ORA-24345”错误的解决方案可能涉及到检查SQL语句,确保所有字段的数据类型和长度都与数据库表结构相匹配,或者调整缓冲区大小以适应数据。对于文件管理功能的问题,可能需要修复或优化上传机制,确保只有安全...
java.sql.SQLException: null, message from server: “Host ‘223.72.41.7’ is not allowed to connect to this MySQL server” 客户端访问时报错: 解决方法: 1,登陆服务器 mysql> use mysql; //用mysql ...
"ora常用sql.rar"这个压缩包显然包含了DBA(Database Administrator,数据库管理员)在日常工作中经常会用到的一些Oracle SQL命令。让我们详细探讨一下这些关键命令及其用途。 1. **查看系统SGA区状态**: SGA...