Other databases have that problem too. I think the issue is actually that our PK names are too long and db2 is truncating it down to a non-unique version. Normally, I think it is PK_DATABASECHANGELOG and PK_DATABASECHANGELOGLOCK
Nathan -----Original Message----- From: Marc Logemann [mailto:l...@logemann.org] Sent: Tuesday, June 02, 2009 9:25 AM To: liquibase-user@lists.sourceforge.net Subject: Re: [Liquibase-user] duplicate Key on Liq Table creation Thanks for the ramp-up infos. It would be very nice if you could name the key constraints differntly. On iSeries there will be an error when you create PK_DATABASECHANGE more than one time. On other DBs, the name is ascociated with the table where the key is for, but not on iSeries. There we have a common pool of names for all tables! --- regards Marc Logemann http://www.logemann.org http://www.logentis.de Am 01.06.2009 um 22:40 schrieb Voxland, Nathan: > If you are interested in adding support, that would be great. The > easiest way is to register on liquibase.jira.com, check out the code > using your username/password, and commit what you need to change. We > are > experimenting with > > The state of the code right now, is that there are two major branches: > /branches/1_9 and /trunk. Trunk is in the process of a major > refactoring which will hopefully be done in about a month. While that > would be the best place to add it, it may not be in the state to jump > into adding new dialect support. > > Your best bet will probably be to check out /branches/1_9 and add it > there. We can always merge the changes into trunk later on. You can > take a look at any of the Database implementations (DB2Database may > be a > good starting point). There is an AbstractSampleChangeLogRunnerTest > class you can extend as well to provide a good automated test of your > new dialect. See DB2SampleChangeLogRunnerTest for an example. > > Let me know if you have any questions > > Nathan > > -----Original Message----- > From: Marc Logemann [mailto:l...@logemann.org] > Sent: Monday, June 01, 2009 7:30 AM > To: liquibase-user@lists.sourceforge.net > Subject: Re: [Liquibase-user] duplicate Key on Liq Table creation > > Hi, > > ok, replying to myself after some hours of investigation: > > 1) we need to define a new DB dialiect in Liquibase which is called > "DB2 for iSeries". The DB2 on this platform, while mostly SQL level > compliant has some quirks when it comes to MetaData handling. Its a > different driver also which is used on this platform. I could start > cloning the original DB2 and make some changes. With current version, > Liquibase handles it like a normal DB2 DB because the proprietary > product name (defined in driver) starts also with DB2 (DB2 UDB for > iSeries). > > 2) my problem mentioned is there because of the call in > AbstractDatabase.doesChangeLogLockTableExist() > > rs = > connection > .getMetaData > ().getTables(convertRequestedSchemaToCatalog(getDefaultSchemaName()), > convertRequestedSchemaToSchema(getDefaultSchemaName()), > getDatabaseChangeLogLockTableName(), new String[]{"TABLE"}); > > just doesnt work. On DB2 for ISeries its a bad idea to supply "null" > as schema name. It uses some user profile defaults to determine the > default schema instead of just looking at some very prominent JDBC url > parameters for the jt400 driver. > > The mother of all my problems is, that every call to getTables() just > doesnt work or better, results in a result-set without any rows. So > Liquibase thinks there are no tables. In my case he thinks that its > DBCHANGELOG tables are not there, but they are. > > So as long as DB2 for iSeries is different in some ways (and to my > knowledge, this will be the case for the time being), you have to > handle it differently. This also applies for nearly ALL SQL clients > available. I am using DBVisualizer which is really good but it also > fails with some DB2 for iSeries thingies because of the non-existant > DB2 abstraction for this platform. > > So i am willing to help out there and hope patches are appreciated. > > --- > regards > Marc Logemann > http://www.logemann.org > http://www.logentis.de > > > > > Am 30.05.2009 um 00:41 schrieb Marc Logemann: > >> Hi, >> >> i am trying to use liquibase to bootstrap a complete DB schema, >> thus i >> dont have any tables. Only the schema. Normally Liquibase creates its >> two management tables and then runs the changeset. This works with >> MySQL but with DB2 for iSeries, i am getting the following stack. It >> seems Liquibase use a Constraint names two times. Lquibase wants to >> create "PK_DATABASECHANGE" two times. >> >> java.sql.SQLException: [SQL0601] PK_DATABASECHANGE der Art * in >> NETVERSYS2 bereits vorhanden. >> at >> com.ibm.as400.access.JDError.throwSQLException(JDError.java:650) >> at >> com.ibm.as400.access.JDError.throwSQLException(JDError.java:621) >> at >> com >> .ibm >> .as400 >> .access.AS400JDBCStatement.commonPrepare(AS400JDBCStatement.java: >> 1378) >> at >> com >> .ibm.as400.access.AS400JDBCStatement.execute(AS400JDBCStatement.java: >> 1729) >> at >> org >> .apache >> .commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java: >> 264) >> at liquibase.database.template.JdbcTemplate >> $1ExecuteStatementCallback.doInStatement(JdbcTemplate.java:78) >> at >> liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java: >> 48) >> at >> liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java: >> 86) >> at >> liquibase >> .database >> .AbstractDatabase >> .checkDatabaseChangeLogLockTable(AbstractDatabase.java:712) >> at liquibase.lock.LockHandler.acquireLock(LockHandler.java:40) >> at liquibase.lock.LockHandler.waitForLock(LockHandler.java:150) >> at liquibase.Liquibase.listUnrunChangeSets(Liquibase.java:518) >> >> The SQL message is in german, it translates to: >> >> java.sql.SQLException: [SQL0601] PK_DATABASECHANGE of Type * in >> NETVERSYS2 already existant. >> >> And in fact it already exists because Liquibase already created its >> first (the lock table) entity. It seems it wants to create the second >> with the same constraint name. Can this be? >> >> --- >> regards >> Marc Logemann >> http://www.logemann.org >> http://www.logentis.de >> >> >> >> >> >> > ------------------------------------------------------------------------ > ------ >> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT >> is a gathering of tech-side developers & brand creativity >> professionals. Meet >> the minds behind Google Creative Lab, Visual Complexity, >> Processing, & >> iPhoneDevCamp as they present alongside digital heavyweights like >> Barbarian >> Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com >> _______________________________________________ >> Liquibase-user mailing list >> Liquibase-user@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/liquibase-user > > > ------------------------------------------------------------------------ > ------ > Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT > is a gathering of tech-side developers & brand creativity > professionals. > Meet > the minds behind Google Creative Lab, Visual Complexity, Processing, & > iPhoneDevCamp as they present alongside digital heavyweights like > Barbarian > Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com > _______________________________________________ > Liquibase-user mailing list > Liquibase-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/liquibase-user > > ------------------------------------------------------------------------ ------ > OpenSolaris 2009.06 is a cutting edge operating system for enterprises > looking to deploy the next generation of Solaris that includes the > latest > innovations from Sun and the OpenSource community. Download a copy and > enjoy capabilities such as Networking, Storage and Virtualization. > Go to: http://p.sf.net/sfu/opensolaris-get > _______________________________________________ > Liquibase-user mailing list > Liquibase-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/liquibase-user ------------------------------------------------------------------------ ------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ Liquibase-user mailing list Liquibase-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/liquibase-user ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ Liquibase-user mailing list Liquibase-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/liquibase-user