1

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

4

2 回答 2

0

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

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

 <dataSourceJNDIName>jdbc/db2</dataSourceJNDIName> 

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

于 2015-03-03T14:41:18.933 回答
0

当您说这是一个“简单查询”时,异常错误代码提到了以下内容

-142
不支持 SQL 语句

解释

检测到数据库不支持的 SQL 语句。该语句可能对其他 IBM® 关系数据库产品有效,也可能在其他上下文中有效。例如,诸如 VALUES 和 SIGNAL 或 RESIGNAL SQLSTATE 之类的语句只能在某些上下文中使用,例如在触发器主体或 SQL 过程中。

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

程序员响应
更改 SQL 语句的语法或从程序中删除该语句。

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

于 2015-01-06T05:20:14.407 回答