java.sql.SQLException: ORA-00600: 内部错误代码,参数: [ttcgcshnd-1], [0], [], [], [], [], [], []

时间:2021-04-30 07:40:33
我的代码如下:

sql = "select max(strid) from table1";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(selSQL);

其中的strid是char(20)类型,后台使用的是oracle数据库,当执行到executeQuery的时候就报出标题给出的错误,但是我在SQLPlus里面执行这个SQL语句就没有问题,为什么?

14 个解决方案

#1


你的语句包含了中文了吗:)??

#2


你把前面的连接数据库的代码都贴出来看看,可能有问题

#3


JDBC驱动不对,比如9的JDBC就不能用8的JDBC

#4


前面的连接代码是:

try {
   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
   String database = "jdbc:oracle:thin:@" + m_hostname + ":" + m_port + ":" + m_sid;
   conn = (OracleConnection)DriverManager.getConnection(database, m_user, m_password);
}catch(Exception e) {
   return false;
}

经过验证连接成功。

我的JDBC是8i的,但是打过补丁了,oracle声称可以使用它连接到9i;数据库是9i的,我是通过客户端连接的,客户端是8i的。

#5


我用8i的jdbc和9i的jdbc都试了,报同样的错误。

#6


sql = "select max(strid) from table1";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(selSQL);

我有点不明白,executeQuery()中搂主是不是要放第一行定义的sql变量呀?为什么放进selSQL了?哪是什么呀?是这里出错了吧

#7


是我敲错了,变量就是selSQL:

selSQL = "select max(strid) from table1"

#8


楼主试一下这一句,应该可以了
selSQL = "select max(strid) from table1 order by strid"

#9


能不能看看楼主定义conn的代码

#10


Connection conn = null;

#11


拜托呀,明显没有加数据驱动呀,怎么能连接成功?底下的是Oracle的驱动,给个例子:
<%
 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
   Connection con = DriverManager.getConnection("jdbc:oracle:thin:@URL:Name","id","password");
   Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
   String SQL= new String();
%>

#12


跟这个没有关系,createStatement的参数都有默认值的,参数是用来设置连接属性的,即使没有也可以正常执行。问题仍然没有解决。

#13


你的驱动程序用的是错误的。我在用JDeveloper3连接oracle9i时出现同样错误。原因就是JDBC8.1.7不能驱动ORACLE9I

#14


这个错误肯定是jdbc版本造成的
你是怎样加的驱动包?估计你没有使用应用服务器带的驱动,而是使用了oracle里的驱动包。
如果可能,尽量使用应用服务器带的驱动程序并配置应用服务器的连接池,例如weblogic自带的9i驱动。
以下都是针对oracle安装目录中的jdbc驱动:
8i的客户端打过补丁可以正常连接到9i服务器端,但是程序在调用该8i的jdbc访问9i就会出错。
9i的客户端可以正常连接8i服务器端,程序调用9i的jdbc也可以正常访问8i数据库。

#1


你的语句包含了中文了吗:)??

#2


你把前面的连接数据库的代码都贴出来看看,可能有问题

#3


JDBC驱动不对,比如9的JDBC就不能用8的JDBC

#4


前面的连接代码是:

try {
   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
   String database = "jdbc:oracle:thin:@" + m_hostname + ":" + m_port + ":" + m_sid;
   conn = (OracleConnection)DriverManager.getConnection(database, m_user, m_password);
}catch(Exception e) {
   return false;
}

经过验证连接成功。

我的JDBC是8i的,但是打过补丁了,oracle声称可以使用它连接到9i;数据库是9i的,我是通过客户端连接的,客户端是8i的。

#5


我用8i的jdbc和9i的jdbc都试了,报同样的错误。

#6


sql = "select max(strid) from table1";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(selSQL);

我有点不明白,executeQuery()中搂主是不是要放第一行定义的sql变量呀?为什么放进selSQL了?哪是什么呀?是这里出错了吧

#7


是我敲错了,变量就是selSQL:

selSQL = "select max(strid) from table1"

#8


楼主试一下这一句,应该可以了
selSQL = "select max(strid) from table1 order by strid"

#9


能不能看看楼主定义conn的代码

#10


Connection conn = null;

#11


拜托呀,明显没有加数据驱动呀,怎么能连接成功?底下的是Oracle的驱动,给个例子:
<%
 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
   Connection con = DriverManager.getConnection("jdbc:oracle:thin:@URL:Name","id","password");
   Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
   String SQL= new String();
%>

#12


跟这个没有关系,createStatement的参数都有默认值的,参数是用来设置连接属性的,即使没有也可以正常执行。问题仍然没有解决。

#13


你的驱动程序用的是错误的。我在用JDeveloper3连接oracle9i时出现同样错误。原因就是JDBC8.1.7不能驱动ORACLE9I

#14


这个错误肯定是jdbc版本造成的
你是怎样加的驱动包?估计你没有使用应用服务器带的驱动,而是使用了oracle里的驱动包。
如果可能,尽量使用应用服务器带的驱动程序并配置应用服务器的连接池,例如weblogic自带的9i驱动。
以下都是针对oracle安装目录中的jdbc驱动:
8i的客户端打过补丁可以正常连接到9i服务器端,但是程序在调用该8i的jdbc访问9i就会出错。
9i的客户端可以正常连接8i服务器端,程序调用9i的jdbc也可以正常访问8i数据库。