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

 小子少耍酷10 发布于 2023-02-06 16:32

我在DB2中创建了名为" TestDB"的本地数据库,然后我创建了一个名为" TestTable"的表.
我发现该表放在模式名称下面是" yasmin".
我正在尝试连接到DB2数据库,JDBC但我得到了这个例外

    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

我在互联网上尝试了很多解决方案,就像设置架构一样,但遗憾的是不行.

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

bhamby.. 11

正如@Mark Rotteveel所说,这个-204错误来自一个丢失的物体,但是由于其他原因而失踪了.

找不到它,因为您没有为模式名称添加前缀.你在上面说它是在架构中yasmin,但你正在联系db2admin,所以它正试图寻找db2admin.TestTable.

SELECT * FROM yasmin.TestTable

应该是你正在寻找的.

默认情况下,模式的搜索路径是当前连接用户的名称.你可以看到它的用途

SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1

如果要更改它,可以使用SET SCHEMA命令更改搜索路径,但通常只需在查询中包含模式名称即可.

1 个回答
  • 正如@Mark Rotteveel所说,这个-204错误来自一个丢失的物体,但是由于其他原因而失踪了.

    找不到它,因为您没有为模式名称添加前缀.你在上面说它是在架构中yasmin,但你正在联系db2admin,所以它正试图寻找db2admin.TestTable.

    SELECT * FROM yasmin.TestTable
    

    应该是你正在寻找的.

    默认情况下,模式的搜索路径是当前连接用户的名称.你可以看到它的用途

    SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1
    

    如果要更改它,可以使用SET SCHEMA命令更改搜索路径,但通常只需在查询中包含模式名称即可.

    2023-02-06 16:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有