Hi,
I am evaluating liquibase on Informix. My initial attempt to run liquibase fails to create the DATABASECHANGELOGLOCK table. It appears that Liquibase uses invalid Informix SQL statements. I have tried this using both the liquibase-maven-plugin and from the command line with the same result. The exact versions I am using are:
- liquibase-core 2.0.3
- liquibase-maven-plugin 2.0.3
- Informix 10.00.TC1
- java 1.6.0_26 (Windows 7)
On the command-line, I use the following arguments (I have tried with and without the --databaseClass arg):
- --driver=com.informix.jdbc.IfxDriver
- --databaseClass=liquibase.database.core.InformixDatabase
- --changeLogFile=src/main/resources/db.changelog.1.xml
- --url="jdbc:informix-sqli://HWNG006:1526/hw:informixserver=ol_hwng006;database=hw"
- --username=informix
- --password=password
- update
I always get the same error:
[ERROR] Error executing SQL CREATE TABLE DATABASECHANGELOGLOCK (ID INT NOT NULL PRIMARY KEY, LOCKED BOOLEAN NOT NULL PRIMARY KEY, LOCKGRANTED DATETIME YE
TO FRACTION(5) PRIMARY KEY, LOCKEDBY VARCHAR(255) PRIMARY KEY); on jdbc:informix-sqli://HWNG006:1526/hw:informixserver=ol_hwng006;database=hwINSERT INTO
ATABASECHANGELOGLOCK (ID, LOCKED) VALUES (1, ‘f’): Primary key already exists on the table.
liquibase.exception.DatabaseException: Error executing SQL CREATE TABLE DATABASECHANGELOGLOCK (ID INT NOT NULL PRIMARY KEY, LOCKED BOOLEAN NOT NULL PRIMA
KEY, LOCKGRANTED DATETIME YEAR TO FRACTION(5) PRIMARY KEY, LOCKEDBY VARCHAR(255) PRIMARY KEY); on jdbc:informix-sqli://HWNG006:1526/hw:informixserver=ol
wng006;database=hwINSERT INTO DATABASECHANGELOGLOCK (ID, LOCKED) VALUES (1, ‘f’): Primary key already exists on the table.
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:62)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:104)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:70)
at liquibase.database.AbstractDatabase.checkDatabaseChangeLogLockTable(AbstractDatabase.java:564)
at liquibase.Liquibase.checkDatabaseChangeLogTable(Liquibase.java:537)
at liquibase.Liquibase.forceReleaseLocks(Liquibase.java:573)
at org.liquibase.maven.plugins.AbstractLiquibaseMojo.cleanup(AbstractLiquibaseMojo.java:429)
at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute(AbstractLiquibaseMojo.java:305)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
Has anyone seen this before? Is my configuration wrong, or is this a problem with the sql dialect being generated by liquibase.
Thanks,
Caleb Powell