ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

blancoDb動かず。。

MySQLはサポート対象外なので、当然といえば当然ですかね。

generate:
blancoDb生成: PostgreSQL
blancoDb タスク
blancoDb Enterprise Edition (1.2.0) 単一表アクセサSQL自動生成: 開始.
データベース接続をオープンします.
  Driver:com.mysql.jdbc.Driver
  URL:jdbc:mysql://localhost/test
  User:
JDBCドライバの基礎情報を取得します。
  DriverName:MySQL-AB JDBC Driver
  DriverVersion:mysql-connector-java-3.1.10 ( $Date: 2005/05/19 15:52:23 $, $Revision: 1.1.2.2 $ )
  DatabaseMajorVersion:4
  DatabaseMinorVersion:0
  JDBCMajorVersion:3
  JDBCMinorVersion:0
未知のJDBCドライバです: MySQL-AB JDBC Driver
表[customer]を処理します
表[item]を処理します
表[orders]を処理します
表[pt]を処理します
データベース接続をクローズします. (rollbackしてcloseします)
JDBC接続の開放に失敗しました: java.sql.SQLException: Can't call rollback when autocommit=true
java.sql.SQLException: Can't call rollback when autocommit=true
        at com.mysql.jdbc.Connection.rollback(Connection.java:4686)
        at blanco.db.collector.BlancoDbDatabaseConnection.close(BlancoDbDatabaseConnection.java:73)
        at blanco.db.helper.BlancoDbTableGateway2Xml.process(BlancoDbTableGateway2Xml.java:114)
        at blanco.db.task.BlancoDbTask.execute(BlancoDbTask.java:230)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1062)
        at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:234)
        at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:242)
        at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:125)
単一表アクセサSQL自動生成: 終了.

...

project\OR\build.xml:78: ビルド時に例外が発生: ビルドを中断します: blanco.db.exception.BlancoDbException: クエリ名[SimpleCustomerSelect]においてSQL例外が発生しました。クエリ名[SimpleCustomerSelect]のSQL文やSQL入力パラメータに誤りが含まれていないか調べてください。SQLState[42000] メッセージ[java.sql.SQLException: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '"customer"
 WHERE ID = 0' at line 2]
構築失敗 (合計時間: 0 秒)

二つ事象はあって、一つ目はautocommit=trueなのにrollbackするなよってやつ。わがままなもんです。そのぐらい融通利かせてくれたっていいのにね。もう一つは、MySQLSQLの解釈によるものっぽくて、テーブル名にダブルクォートが付いているとダメみたいです。この辺、スタンダードがどうなのかって辺りがポイントでしょうね。