別紙：db_syntax_diff未検出事象一覧
項番 事象
原因
1 commander4jのビデオチュートリアル「Database Schema」で実行時 インストール済みか判定する以下のDML文の失敗以降のSQLでエラーが発生している。にダイアログによる以下のDDL文エラーが発生した
ERROR: relation "sys_control" does not exist at character 15
ERROR: current transaction is aborted, commands ignored until
STATEMENT: select * from SYS_CONTROL where 1 = 2
end of transaction block

対処■対処１．テーブル名、カラム名を「”」(ダブルクォート)括りなしで生成するように修正する。
■対処２．DDL文実行前にCOMMIT文を実行するようにJavaソースに処理を追加する。

修正例
テーブル名を大文字小文字を識別する「”」(ダブルクォート)括りで宣言しているが、ＳＥＬＥＣＴ文で com.commander4j.cfg.JFrameHostAdmin.java
L1099「”」(ダブルクォート)括りなしで指定している箇所がある。
//PG add ->上記の修正をしてもエラーが解消されないため、PostgreSQLログにSQLが全て出力されるように String driver =設定を変更して、DBを再構築して再実施したところ、select文の前にBEGINが実行されておCommon.hostList.getHost(Common.selectedHostID).getDatabaseParameters().getjdbcDriver();
り、COMMITされていないことが原因であることがわかった。
if (driver.equals("org.postgresql.Driver")){try{
また、トランザクションの概念がPostgreSQLとMySQL、Oracleは異なるため、SQL例外処理にrollback実行処理の追加が必要
Common.hostList.getHost(Common.selectedHostID).getConnection(Common.sessionID).commit();}catch (Exception e){e.printStackTrace();}}//PG add end■対処３．SQL例外処理にrollback実行処理の追加
修正箇所は「catch (SQLException e)」「execute(」「executeQuery」「catch (SQLException」のキーワードで検出
修正例
com.commander4j.db.JDBUom.java
L88
catch (SQLException e){
setErrorMessage(e.getMessage());//PG add ->String driver =Common.hostList.getHost(getHostID()).getDatabaseParameters().getjdbcDriver();if (driver.equals("org.postgresql.Driver")){try{
Common.hostList.getHost(getHostID()).getConnection(getSessionID()).rollback();}
catch (Exception e2){e2.printStackTrace();}}//PG add end}
return result;}

2 commander4jのビデオチュートリアル「Database Schema」で実行時 CREASTE VIEW文でPostgreSQL未対応の単語(FORCE)が記述されていたため。にダイアログによる以下のDDL文エラーが発生した
ERROR: syntax error at or near "FORCE" at character XX
STATEMENT:CREATE OR REPLACE FORCE VIEW
"VIEW_PALLET_EXPIRY" (XXXX) AS (SELECT XXXX)

未対応の単語(FORCE)を削除する。
再実施したところ、以下のログとなり、「ERROR: syntax error at or near "FORCE" at character XX」の修正は単純に「FORCE」を削除するのではなく、DROP文を追加する必要があった。また、「FORCE」のない「CREATE OR REPLACE VIEW」も同様の対処を行なった。
ERROR: cannot change name of view column "customer_name" to "old_material"
STATEMENT:CREATE OR REPLACE VIEW VIEW_PALLET_EXPIRY AS ・・・

3 commander4jのビデオチュートリアル「Database Schema」で実行時 ALTER TABLE文でPostgreSQL未対応の単語(MODIFY)が記述されていたため。にダイアログによる以下のDDL文エラーが発生した

未対応単語(MODIFY)に対応する単語(ALTER)に置き換える。

ERROR: syntax error at or near "MODIFY" at character XX
STATEMENT: ALTER TABLE SYS_MODULES MODIFY (XXXXXXXX)
4 ERROR: column "sysdate" does not exist
STATEMENT: CREATE TABLE APP_PALLET( XXXDATE_OF_MANUFACTURE TIMESTAMP DEFAULTSYSDATE,XXX );PostgreSQL未対応の単語(SYSDATE)が記述されていたため。

5 commander4jのビデオチュートリアル「Database Schema」で実行時 PostgreSQL未対応の単語(ROWNUM)が記述されていたため。にダイアログによる以下のDDL文エラーが発生した

未対応単語(SYSDATE)に対応する単語「NOW()」に置き換える。

未対応単語(ROWNUM)に対応する単語(LIMIT)に置き換える。構文は全く同じでは無いので必要に応じて修正する。

ERROR: column "rownum" does not exist at character XX
STATEMENT: UPDATE ・・・ AND ROWNUM = 1)
6 commander4jのディスクトップ起動時に以下のエラーが発生した

PostgreSQLはFrom句にサブクエリを記述するときはalias(as XX)を記述する必要がある。

各サブクエリにaliasの記述を追加する。

PostgreSQL未対応の単語(NOT NULL ENABLE)(ENABLE)が記述されていたため。

未対応単語(ENABLE)を削除する。

ERROR: subquery in FROM must have an alias at character ＸＸ
HINT: For example, FROM (SELECT ...) [AS] foo.
STATEMENT: select distinct(module_id) from (selectsugm.user_id,sgp.module_id from sys_user_group_membershipsugm, sys_group_permissions sgp where sgp.group_id =sugm.group_id)where user_id = $1 order by module_id
7 SQL修正時にPostgreSQL未対応のSQLを発見した。
例(000054.xmlファイル)例<statement>
CREATE TABLE "APP_QM_ACTIVITY"( "INSPECTION_ID" VARCHAR2(20 BYTE) NOT NULLENABLE,"ACTIVITY_ID" VARCHAR2(10 BYTE) NOT NULL ENABLE,"DESCRIPTION" VARCHAR2(50 BYTE),"EXTENSION_ID" NUMBER,CONSTRAINT "APP_QM_ACTIVITY_PK" PRIMARY KEY("INSPECTION_ID", "ACTIVITY_ID")
ENABLE)</statement><statement>
CREATE TABLE "APP_QM_ACTIVITY"( "INSPECTION_ID" VARCHAR2(20 BYTE) NOT NULL,"ACTIVITY_ID" VARCHAR2(10 BYTE) NOT NULL,"DESCRIPTION" VARCHAR2(50 BYTE),"EXTENSION_ID" NUMBER,CONSTRAINT "APP_QM_ACTIVITY_PK" PRIMARY KEY ("INSPECTION_ID", "ACTIVITY_ID"))</statement>

8 SQL修正時にPostgreSQL未対応のSQLを発見した。

PostgreSQLはDELETE文にFrom句を記述する必要がある。

sql.org.postgresqlDriver.xmlファイル修正<text>delete {schema}sys_interface_log where interface_log_id= ?</text>

ページ 1

未記述単語（FROM）の記述を追加する。