当前位置: 首页 > 知识库问答 >
问题:

DB2 SQL错误:sqlcode=-204,sqlstate=42704

魏朗
2023-03-14

我在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

我在internet上尝试了许多解决方案,比如set模式,但不幸的是都不起作用。

这是我使用的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
          }
        }

共有1个答案

罗烨霖
2023-03-14

正如@Mark Rotteveel所说,-204错误来自一个丢失的对象,但它丢失的原因不是他所说的。

没有找到它,因为您没有用架构名称作为前缀。上面您说它在模式Yasmin中,但是您连接的是db2admin,所以它试图查找db2admin.testtable

SELECT * FROM yasmin.TestTable

应该是你要找的。

SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1

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

 类似资料: