gpt4 book ai didi

java - DB2 SQL 错误 : SQLCODE=-204, SQLSTATE=42704

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:34:31 31 4
gpt4 key购买 nike

我在 DB2 中创建了名为“TestDB”的本地数据库,然后创建了名为“TestTable”的表。
我发现该表放在架构名称为“yasmin”下。
我正在尝试使用 JDBC 连接到 DB2 数据库,但出现此异常

    R SQLException information
[1/4/14 11:32:59:289 EST] 0000004d SystemErr R Error msg: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2ADMIN.TESTTABLE, DRIVER=3.61.86
[1/4/14 11:32:59:290 EST] 0000004d SystemErr R SQLSTATE: 42704
[1/4/14 11:32:59:290 EST] 0000004d SystemErr R Error code: -204
[1/4/14 11:32:59:290 EST] 0000004d SystemErr R com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2ADMIN.TESTTABLE, DRIVER=3.61.86

我在互联网上尝试了很多解决方案,比如 set schema,但不幸的是没有用。

这是我使用的JDBC代码

 String urlPrefix = "jdbc:db2:";
String url;
String user;
String password;
String empNo;
Connection con;
Statement stmt;
ResultSet rs;

url = urlPrefix + "//127.0.0.1:50000/TestDB";
user = "db2admin";
password = "db2admin";
try
{
// Load the driver
Class.forName("com.ibm.db2.jcc.DB2Driver");
System.out.println("**** Loaded the JDBC driver");

// Create the connection using the IBM Data Server Driver for JDBC and SQLJ
con = DriverManager.getConnection (url, user, password);
// Commit changes manually

con.setAutoCommit(false);
System.out.println("**** Created a JDBC connection to the data source");
stmt = con.createStatement(); con.createStatement();
System.out.println("**** Created JDBC Statement object");
// Execute a query and generate a ResultSet instance

rs = stmt.executeQuery("select *from TestTable");
System.out.println("**** Created JDBC ResultSet object");
}

catch (ClassNotFoundException e)
{
System.err.println("Could not load JDBC driver");
System.out.println("Exception: " + e);
e.printStackTrace();
}

catch(SQLException ex)
{
System.err.println("SQLException information");
while(ex!=null) {
System.err.println ("Error msg: " + ex.getMessage());
System.err.println ("SQLSTATE: " + ex.getSQLState());
System.err.println ("Error code: " + ex.getErrorCode());
ex.printStackTrace();
ex = ex.getNextException(); // For drivers that support chained exceptions
}
}

最佳答案

正如@Mark Rotteveel 所说,-204 错误是由一个丢失的对象引起的,但它丢失的原因与他所说的不同。

找不到它是因为您没有在它前面加上架构名称。您在上面说过它在架构 yasmin 中,但您正在连接 db2admin,因此它正在尝试寻找 db2admin.TestTable

SELECT * FROM yasmin.TestTable

应该是你要找的。

默认情况下,架构的搜索路径是当前连接用户的名称。你可以看到它正在使用什么

SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1

如果你想改变它,你可以使用SET SCHEMA命令更改搜索路径,但通常只在查询中包含架构名称会更容易。

关于java - DB2 SQL 错误 : SQLCODE=-204, SQLSTATE=42704,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20919298/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com