【问题标题】:DB2 exception: Cannot create PoolableConnectionFactory SQLCODE=-142,DB2 异常:无法创建 PoolableConnectionFactory SQLCODE=-142,
【发布时间】:2015-03-03 22:41:18
【问题描述】:

我在 MobileFirst Platform 6.3 中一直出现以下错误:

运行时:org.apache.commons.dbcp.SQLNestedException:无法创建 PoolableConnectionFactory(DB2 SQL 错误:SQLCODE=-142, SQLSTATE=42612, SQLERRMC=null, DRIVER=4.19.26)

这是我的适配器代码:

     var test2 = WL.Server.createSQLStatement("SELECT * FROM WSDIWC.WBPTRR1");

     function getCEID(cnum) {   
        return WL.Server.invokeSQLStatement({
            preparedStatement : test2,
            parameters : []
        });
     }

和适配器 XML:

     <connectivity>
        <connectionPolicy xsi:type="sql:SQLConnectionPolicy">
        <!-- Example for using a JNDI data source, replace with actual data source 
            name -->
        <!-- <dataSourceJNDIName>${training-jndi-name}</dataSourceJNDIName> -->

        <!-- Example for using MySQL connector, do not forget to put the MySQL 
            connector library in the project's lib folder -->
         <dataSourceDefinition>
              <driverClass>com.ibm.db2.jcc.DB2Driver</driverClass>
               <url>jdbc:db2://***</url>
               <user>**</user>
                <password>**</password>
            </dataSourceDefinition>
        </connectionPolicy>
    </connectivity>

我已经删除了网址、用户名和密码。 希望您能帮助我澄清当前的问题。

我已经知道 sql 不被接受,因为它只是一个简单的查询。
我还研究了 z/OS DB2 存在相同错误代码 sqlcode=-142 的问题。 http://answers.splunk.com/answers/117024/splunk-db-connect-db2.html

【问题讨论】:

    标签: db2 ibm-mobilefirst mobilefirst-adapters


    【解决方案1】:

    虽然你说这是一个“简单查询”,但the exception error code mentions the following:

    -142
    不支持 SQL 语句

    解释

    检测到数据库不支持的 SQL 语句。 该语句可能对其他 IBM® 关系数据库有效 产品,或者它可能在其他情况下有效。例如, 可以使用 VALUES 和 SIGNAL 或 RESIGNAL SQLSTATE 等语句 仅在某些上下文中,例如在触发器主体或 SQL 中 程序。

    系统操作
    无法处理该语句。

    程序员的回应
    更改 SQL 语句的语法或从 程序。

    您应该查看 DB2 SQL 指南以了解如何实现您想要实现的目标,如果您需要进一步的帮助,请在问题中说明这一点。例如,您确定“WSDIWC.WBPTRR1”确实可用吗?

    【讨论】:

    • 它在数据工作室工作。我已经检查了十几次。我所有的查询都在数据工作室工作。我的其他团队也尝试过,但他们收到相同的错误消息。感谢您的帮助。
    【解决方案2】:

    我在 MobileFirst 6.3 中与大型机 DB2 的 JDBC 连接遇到了同样的问题。与 DB2 LUW 的连接运行良好。似乎默认池 validationQuery 对 DB2 LUW 有效,但对 DB2 z/OS 无效。

    您可以通过在 Liberty 配置文件 server.xml 中进行数据源配置来解决该错误。从 Eclipse Servers 视图中,展开 MobileFirst Development Server 并编辑 Server Configuration。在那里添加驱动程序和数据源;例如:

     <library id="db2jcc">
        <fileset dir="whereever" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/>
     </library>
     <dataSource id="db2" jndiName="jdbc/db2">
        <jdbcDriver libraryRef="db2jcc"/>
        <properties.db2.jcc databaseName="mydb" portNumber="5021" 
            serverName="myserver" user="myuser" password="mypw" />
     </dataSource>
    

    然后在 connectionPolicy 下的适配器 XML 中引用它:

     <dataSourceJNDIName>jdbc/db2</dataSourceJNDIName> 
    

    在 server.xml(相对于适配器 XML)中配置数据源的一个好处是您可以访问所有数据源、JDBC 和 JCC 属性。所以如果连接池给你带来了其他问题,你可以自定义或者切换到其他数据源类型,比如type="javax.sql.DataSource"。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 2020-09-29
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多