我在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
答案 0 :(得分:0)
虽然您说这是一个“简单查询”,the exception error code mentions the following:
-142
SQL语句不受支持解释
检测到数据库不支持的SQL语句。 该语句可能对其他IBM®关系数据库有效 产品或它可能在另一种情况下有效。例如, 可以使用VALUES和SIGNAL或RESIGNAL SQLSTATE等语句 仅在某些上下文中,例如在触发器主体或SQL中 过程
系统操作
该声明无法处理。程序员回复
更改SQL语句的语法或从中删除语句 该计划。
您应该查看DB2 SQL指南,了解如何实现您想要实现的目标,并在问题中解释您是否需要进一步的帮助。例如,您确定“WSDIWC.WBPTRR1”实际可用吗?
答案 1 :(得分:0)
我在MobileFirst 6.3中与大型机DB2的JDBC连接遇到了同样的问题。与DB2 LUW的连接工作正常。看来默认池validationQuery对DB2 LUW有效,但对DB2 z / OS无效。
您可以通过在Liberty配置文件server.xml
中执行数据源配置来解决此问题。从Eclipse Servers 视图中,展开 MobileFirst Development Server 并编辑服务器配置。在那里添加驱动程序和数据源;例如:
<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"
。