We are doing a POC on Liquibase and EDB PostgreSQL. When trying to use EDB supplied JDBC driver edb-jdbc-42.2.19.1.jar to work with open source Liquibase schema change tracking tool (latest version 4.5), I see a lot of issues. However if I switch to open source PostgreSQL jar file postgresql-42.2.18.jar I see everything works perfectly fine.
We have reached out to EDB support and they have mentioned that the Liquibase application is not recognizing the EDB JDBC driver as a valid official driver. We need help from the Liquibase community on this. Please help us if there is any workaround or Liquibase team has a timeline for when it can recognize and support EDB’s JDBC driver.
Details:
- With a freshly installed Liquibase environment, when I run Liquibase for the first time I see this error while creating a tracking table needed by Liquibase. This problem is resolved by creating this table upfront. But still it needs a fix.
SEVERE [liquibase.integration] ERROR: current transaction is aborted, commands ignored until end of transaction block
liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: ERROR: current transaction is aborted, commands ignored until end of transaction block [Failed SQL: (0) CREATE TABLE tkcsowner.my_db_change_log_lock (ID INT NOT NULL, “LOCKED” BOOLEAN NOT NULL, LOCKGRANTED datetime, LOCKEDBY VARCHAR(255), CONSTRAINT PK_MY_DB_CHANGE_LOG_LOCK PRIMARY KEY (ID))]
- When I used the command generateChangeLog, it worked fine with the PostgreSQL driver but failed with the EDB driver. Here is the command I tried to generate a change log.
liquibase --changeLogFile=dbchangelog.sql generateChangeLog
Here is the error we see in the log
SEVERE [liquibase.integration] com.edb.util.PSQLException: ERROR: relation “information_schema.constraints” does not exist
Position: 58
Location: File: parse_relation.c, Routine: parserOpenTable, Line: 1166
Server SQLState: 42P01
liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: liquibase.exception.DatabaseException: com.edb.util.PSQLException: ERROR: relation “information_schema.constraints” does not exist
Here is the output from trace file
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl receiveRFQ] <=BE ReadyForQuery(T)
[2021-11-08 21:34:56] FINEST [com.edb.jdbc.PgResultSet getString] getString columnIndex: 1
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl execute] simple execute, handler=com.edb.jdbc.PgStatement$StatementResultHandler@41e68d87, maxRows=0, fetchSize=0, flags=1
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendParse] FE=> Parse(stmt=null,query=“select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME from information_schema.constraints where constraint_schema=‘tkcsowner’ and constraint_catalog=‘null’ and constraint_type=‘UNIQUE’ and table_name=‘biofingrscntyp’”,oids={})
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendBind] FE=> Bind(stmt=null,portal=null)
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendDescribePortal] FE=> Describe(portal=null)
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendExecute] FE=> Execute(portal=null,limit=0)
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendSync] FE=> Sync
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl receiveErrorResponse] <=BE ErrorMessage(ERROR: relation “information_schema.constraints” does not exist
Position: 58
Location: File: parse_relation.c, Routine: parserOpenTable, Line: 1166
Server SQLState: 42P01)
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl receiveRFQ] <=BE ReadyForQuery(E)
The Java I am using is openjdk version “1.8.0_292” OpenJDK Runtime Environment (build 1.8.0_292-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)