【问题标题】:Appfuse 3.5 and DB2Appfuse 3.5 和 DB2
【发布时间】:2015-11-01 04:40:06
【问题描述】:

我正在尝试使用appfuse 创建一个网络应用程序。默认情况下,appfuse 将应用程序配置为使用 MySQL 数据库,但我想使用 DB2 数据库。由于 Appfuse 使用 hibernate 和 Spring,这应该是一个相当简单的配置更改,但我无法让它工作。我的所有 SQL 调用都出现以下错误:

create table role (
    id bigint generated by default as identity,
    description varchar(64),
    name varchar(20),
    primary key (id)
);
HHH000389: Unsuccessful: create table role (id bigint generated by default as identity, description varchar(64), name varchar(20), primary key (id))
DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;imary key (id));END-OF-STATEMENT, DRIVER=4.19.26

这是我配置休眠和 jdbc 连接的方式:

<jdbc.groupId>com.ibm.db2</jdbc.groupId>
<jdbc.artifactId>db2jcc4</jdbc.artifactId>
<jdbc.version>10.5</jdbc.version>
<jdbc.driverClassName>com.ibm.db2.jcc.DB2Driver</jdbc.driverClassName>
<jdbc.url>jdbc:db2://<IP Address>:<Port>/<DBName>:currentSchema=<schemaName>;</jdbc.url>
<jdbc.username><username></jdbc.username>
<jdbc.password><password></jdbc.password>
<jdbc.validationQuery><![CDATA[SELECT 1 FROM sysibm.sysdummy1;]]></jdbc.validationQuery>

<hibernate.dialect>org.hibernate.dialect.DB2Dialect</hibernate.dialect>

我不明白我哪里出错了。我可以使用相同的 db2jcc4.jar 和连接参数通过 netbeans 连接到数据库并从上面复制和粘贴 sql,它执行没有错误。所以我不相信这是 SQLCODE=104, SQLSTATE42601 所指示的语法错误。我不知道我做错了什么。非常感谢您能给我的任何帮助!

【问题讨论】:

  • Hibernate 发出的create table role 语句的语法对 DB2 无效。我猜 Hibernate 方言不会以某种方式从 MySQL 切换到 DB2。或者可能是应用程序直接发出 SQL 语句。
  • 但是,我执行了create table语句,它是有效的。 :S
  • 您连接的是什么版本的 DB2,它运行在什么平台上?
  • 感谢您的建议。 DB2 的版本是 v10.5.0.5,它作为 IBM bluemix 服务运行。

标签: java spring hibernate db2 appfuse


【解决方案1】:

我不确定这是否是正确的答案,但它有效:我删除了验证查询。

如果有人知道更好的答案或为什么会这样,请分享。

谢谢!

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 2015-05-11
    • 2017-03-04
    • 2011-11-10
    • 1970-01-01
    • 2010-11-05
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多