Migration generated by Entity Modeler fails
-------------------------------------------
Key: WOL-834
URL: http://issues.objectstyle.org/jira/browse/WOL-834
Project: WOProject/WOLips
Issue Type: Bug
Components: wolips
Affects Versions: WOLips 3.3.2.* (nightly build please specify)
Environment: WO 5.3.3, WOLips 3.3.5215
Reporter: Johann Werner
Priority: Minor
The migration code generated by Entity Modeler fails. The problem is that each table is created with all its attributes, primary key(s) and foreign keys one after another. That means that most of the time when adding a foreign key the referenced table has not been created yet and thus throwing an exception.
The solution would be (I am doing this manually now) to move all addForeignKey() function calls to the end of the migration code so all tables already exist.
Example exception:
Jun 19 11:01:40 dRent[56674] (ERXJDBCUtilities.java:539) INFO er.extensions.ERXJDBCUtilities - Executing ALTER TABLE "XBLUETOOTHPROFILECELLPHONE" ADD CONSTRAINT FOREIGN_KEY_XBluetoothProfileCellPhone_bluetoothProfileId_BluetoothProfile_id FOREIGN KEY ("BLUETOOTHPROFILEID") REFERENCES "BLUETOOTHPROFILE" ("ID") DEFERRABLE INITIALLY DEFERRED
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:44) DEBUG NSLog - === Commit Internal Transaction
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:44) DEBUG NSLog - === Begin Internal Transaction
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:44) DEBUG NSLog - evaluateExpression: <com.webobjects.jdbcadaptor.FrontbasePlugIn$FrontbaseExpression: "UPDATE "_dbupdater" SET "lockowner" = NULL, "updatelock" = 0 WHERE "modelname" = 'dRentModel'">
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:44) DEBUG NSLog - === Commit Internal Transaction
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:44) DEBUG NSLog - === Begin Internal Transaction
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:44) DEBUG NSLog - === Rollback Internal Transaction
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:44) DEBUG NSLog - === Begin Internal Transaction
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:44) DEBUG NSLog - === Commit Internal Transaction
Jun 19 11:01:40 dRent[56674] (ERXNSLogLog4jBridge.java:41) WARN NSLog - A fatal exception occurred: Migration failed.
[2008-06-19 11:01:40 CEST] <main> er.extensions.migration.ERXMigrationFailedException: Migration failed.
at er.extensions.migration.ERXMigrator$ERXMigrationAction.doPerform(ERXMigrator.java:420)
at er.extensions.ERXEOAccessUtilities$ChannelAction.perform(ERXEOAccessUtilities.java:1400)
at er.extensions.migration.ERXMigrator.migrateToLatest(ERXMigrator.java:175)
at er.extensions.ERXApplication.finishInitialization(ERXApplication.java:872)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:120)
at com.webobjects.foundation.NSNotificationCenter$_Entry.invokeMethod(NSNotificationCenter.java:601)
at com.webobjects.foundation.NSNotificationCenter.postNotification(NSNotificationCenter.java:545)
at com.webobjects.foundation.NSNotificationCenter.postNotification(NSNotificationCenter.java:559)
at com.webobjects.appserver.WOApplication.run(WOApplication.java:878)
at er.extensions.ERXApplication.run(ERXApplication.java:966)
at com.webobjects.appserver.WOApplication.main(WOApplication.java:324)
at er.extensions.ERXApplication.main(ERXApplication.java:509)
at com.oyosys.drent.Application.main(Application.java:9)
Caused by: java.sql.SQLException: Semantic error 116. Referenced TABLE - BLUETOOTHPROFILE - does not exist.
at com.frontbase.jdbc.FBJErrorMetaData.errorMessageAtIndex(FBJErrorMetaData.java:162)
at com.frontbase.jdbc.FBJErrorMetaData.getExceptionChain(FBJErrorMetaData.java:194)
at com.frontbase.jdbc.FBJStatement.checkMetaData(FBJStatement.java:472)
at com.frontbase.jdbc.FBJStatement.executeUpdate(FBJStatement.java:262)
at er.extensions.ERXJDBCUtilities.executeUpdateScript(ERXJDBCUtilities.java:541)
at er.extensions.migration.ERXMigrationTable.addForeignKey(ERXMigrationTable.java:973)
at er.extensions.migration.ERXMigrationTable.addForeignKey(ERXMigrationTable.java:958)
at er.extensions.migration.ERXMigrationTable.addForeignKey(ERXMigrationTable.java:936)
at com.oyosys.drent.migrations.dRentModel0.upgrade(dRentModel0.java:34)
at er.extensions.migration.ERXMigrationDatabase$Migration.upgrade(ERXMigrationDatabase.java:358)
at er.extensions.migration.ERXMigrator$ERXMigrationAction.doPerform(ERXMigrator.java:403)
... 16 more
-- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.objectstyle.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
This archive was generated by hypermail 2.0.0 : Thu Jun 19 2008 - 05:11:20 EDT