java - 无法从 Java 为 DB2 for IDAA 启用查询加速器
问题描述
我正在尝试使用普通 JDBC 方法从 Java 以查询加速器模式执行 SQL 查询。也就是说,创建一个连接DriverManager
并执行查询。但它的投掷失败了com.ibm.db2.jcc.am.SqlSyntaxErrorException
我在 IBM 文档中为此设置了连接 URL 中的特殊参数。
表已移至 IBM DB2 Analytics Accelerator (IDAA) 服务器,我能够从 AQT 工具(My DB 客户端工具)以加速模式执行查询,并且运行速度超快。
我使用了db2jcc4
驱动程序Type4
,连接 URL 和连接类如下所示:
public class ConnectionManager {
private static final Logger LOGGER = LoggerFactory.getLogger(ConnectionManager.class);
private static String url = "jdbc:db2://myIP:myPort/myDBName:specialRegisters=CURRENT QUERY ACCELERATION=ELIGIBLE";
private static String driverName = "com.ibm.db2.jcc.DB2Driver";
private static String username = "user";
private static String password = "pwd";
private static Connection con;
private static String urlstring;
public static Connection getConnection() throws SQLException, ClassNotFoundException {
try {
Class.forName(driverName);
try {
con = DriverManager.getConnection(url, username, password);
} catch (SQLException ex) {
// log an exception. fro example:
System.out.println("Failed to create the database connection.");
throw ex;
}
} catch (ClassNotFoundException ex) {
// log an exception. for example:
System.out.println("Driver not found.");
throw ex;
}
return con;
}
}
有什么我错过或做错了吗?
com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10165][10051][4.24.92] Invalid database URL syntax: jdbc:db2://IP:Port/DBName:specialRegisters=CURRENT QUERY ACCELERATION=ELIGIBLE. ERRORCODE=-4461, SQLSTATE=42815
at com.ibm.db2.jcc.am.b6.a(b6.java:810)
at com.ibm.db2.jcc.am.b6.a(b6.java:66)
at com.ibm.db2.jcc.am.b6.a(b6.java:98)
at com.ibm.db2.jcc.DB2Driver.tokenizeURLProperties(DB2Driver.java:950)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:413)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:113)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at colruyt.spcpocxpsejb.util.ConnectionManager.getConnection(ConnectionManager.java:38)
at colruyt.spcpocxpsejb.util.TestUtility.testAOT(TestUtility.java:98)
at colruyt.spcpocxpsejb.util.TestUtility.main(TestUtility.java:25)
Caused by: java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at java.util.StringTokenizer.nextToken(StringTokenizer.java:377)
at com.ibm.db2.jcc.DB2Driver.tokenizeURLProperties(DB2Driver.java:938)
... 7 more
解决方案
推荐阅读
- javascript - 仅在打开 Modal 时如何在 React Modal 中触发 API?
- python - xml到字符串更改格式化python
- python - 如何从 WAV 文件中提取频率 - python
- javascript - 如何使用 ES 6 语法检查对象内联的 null 属性?
- sql - 从单个查询的多选语句中获取结果
- android - 无法为 android 链接“react-native-background-timer”包
- android - 问题列表的自定义段落编号
- ios - 在Objective C中通过键从SwiftDeferredNSDictionary中提取一个值,其中键是Swift枚举
- css - 减少标题和段落之间的差距
- angular - 无法读取 MatDialogContainer.attachComponentPortal 未定义的属性“hasAttached”