[OS-JIRA] Created: (WOL-834) Migration generated by Entity Modeler fails

From: Johann Werner (JIRA) ("Johann)
Date: Thu Jun 19 2008 - 05:10:10 EDT

  • Next message: sharpy: "ERCAuditTrail and User GlobalID"

    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