It look like you have some models objects marked as shared based on this in
the stack trace:
_preloadSharedObjectsWithModel

My guess is that this is not supported (or is a bug, depending on how you
look at it).

John

On Thu, Mar 17, 2011 at 5:36 AM, Yung-Luen Lan <[email protected]> wrote:

> Hi,
>
> I have a project setup with ERXMigration. The migration works except
> the first time database initialization.
>
> That is, I have a newly installed server with an empty database and I
> want my project create those tables automatically.
> But I get errors like this:
>
> Mar 17 17:56:43 MyWebApp[52666] (ERXDatabaseContextDelegate.java:177)
> INFO   - Database Exception occured: ERROR: relation "preference" does
> not exist
> <<Stack Trace>>
>
> Mar 17 17:56:43 MyWebApp[52666] (ERXApplication.java:1307) ERROR  -
> MyWebApp failed to start.
> <<Stack Trace>>
>
> Mar 17 17:56:43 MyWebApp[52666] (ERXNSLogLog4jBridge.java:43) WARN   -
> A fatal exception occurred: EvaluateExpression failed:
> <com.webobjects.jdbcadaptor.PostgresqlExpression: "SELECT t0.key,
> t0.pID, t0.value FROM Preference t0 ORDER BY t0.key DESC"
> withBindings: >:
>    Next exception:SQL State:42P01 -- error code: 0 -- msg: ERROR:
> relation "preference" does not exist
> <<Stack Trace>>
>
>
> where preference is one of my data model. Stack trace was listed as
> the following. I can create those tables by running "Generate SQL" in
> Eclipse, but that's not a friendly way to install a webapp. Any
> insight about this is appreciated.
>
> My Database0.java look like this:
>
> public class Database0 extends Migration {
>
> // downgrade omitted
>
> public void upgrade(EOEditingContext ec, ERXMigrationDatabase
> database) throws Throwable {
>        ERXMigrationTable bookTable = database.newTableNamed("Book");
>        bookTable.newStringColumn("annotation", 1024, true);
>        bookTable.newStringColumn("barcode", 64, false);
>        bookTable.newIntegerColumn("bookID", false);
>        bookTable.newIntBooleanColumn("duplex", false);
>        bookTable.create();
>        bookTable.setPrimaryKey("bookID");
>
>        ERXMigrationTable preferenceTable =
> database.newTableNamed("Preference");
>        preferenceTable.newStringColumn("key", 128, false);
>        preferenceTable.newIntegerColumn("pID", false);
>        preferenceTable.newStringColumn("value", 1024, false);
>        preferenceTable.create();
>        preferenceTable.setPrimaryKey("pID");
>        // ...
> }
> }
>
> And I set the properties:
>
> # Migrations
> er.migration.migrateAtStartup=true
> er.migration.createTablesIfNecessary=true
> er.migration.modelNames=Database
> Database.MigrationClassPrefix=com.example.migration.Database
> dbConnectURLGLOBAL=jdbc:postgresql://localhost/mydb
> dbConnectUserGLOBAL=postgres
> #Database.InitialMigrationVersion=0
>
> <<Stack Trace>>
>  Position: 38at
>
> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
> at
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
> at
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
> at
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
> at
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
> at
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:366)
> at
> com.webobjects.jdbcadaptor.JDBCChannel._bindInputVariablesWithBindingsAndExecute(JDBCChannel.java:272)
> at
> com.webobjects.jdbcadaptor.JDBCChannel._evaluateExpression(JDBCChannel.java:337)
> at
> com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression(JDBCChannel.java:296)
> at
> com.webobjects.jdbcadaptor.JDBCChannel.selectAttributes(JDBCChannel.java:220)
> at
> com.webobjects.eoaccess.EODatabaseChannel._selectWithFetchSpecificationEditingContext(EODatabaseChannel.java:897)
> at
> com.webobjects.eoaccess.EODatabaseChannel.selectObjectsWithFetchSpecification(EODatabaseChannel.java:234)
> at
> com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(EODatabaseContext.java:3055)
> at
> com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3195)
> at
> com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
> at
> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
> at
> com.webobjects.eocontrol.EOSharedEditingContext.bindObjectsWithFetchSpecification(EOSharedEditingContext.java:401)
> at
> com.webobjects.eoaccess.EODatabaseContext._preloadSharedObjectsWithModel(EODatabaseContext.java:1217)
> at
> com.webobjects.eoaccess.EODatabaseContext.registeredDatabaseContextForModel(EODatabaseContext.java:1012)
> at
> com.webobjects.eoaccess.EODatabaseContext.registeredDatabaseContextForModel(EODatabaseContext.java:1033)
> at
> er.extensions.jdbc.ERXJDBCUtilities.databaseProductName(ERXJDBCUtilities.java:826)
> at
> er.extensions.migration.ERXMigrator._buildDependenciesForModel(ERXMigrator.java:352)
> at
> er.extensions.migration.ERXMigrator._buildDependenciesForModelsNamed(ERXMigrator.java:275)
> at
> er.extensions.migration.ERXMigrator.migrateToLatest(ERXMigrator.java:184)
> at
> er.extensions.appserver.ERXApplication.finishInitialization(ERXApplication.java:1186)
> 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:597)
> at
> com.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:122)
> at
> com.webobjects.foundation.NSNotificationCenter$_Entry.invokeMethod(NSNotificationCenter.java:588)
> at
> com.webobjects.foundation.NSNotificationCenter.postNotification(NSNotificationCenter.java:532)
> at
> com.webobjects.foundation.NSNotificationCenter.postNotification(NSNotificationCenter.java:546)
> at com.webobjects.appserver.WOApplication.run(WOApplication.java:1229)
> at er.extensions.appserver.ERXApplication.run(ERXApplication.java:1303)
> at com.webobjects.appserver.WOApplication.main(WOApplication.java:548)
> at er.extensions.appserver.ERXApplication.main(ERXApplication.java:783)
> at com.example.app.Application.main(Application.java:22)
>
>
>        at
> com.webobjects.jdbcadaptor.JDBCContext._jdbcErrorWithChannel(JDBCContext.java:170)
>        at
> com.webobjects.jdbcadaptor.JDBCChannel._evaluateExpression(JDBCChannel.java:344)
>        at
> com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression(JDBCChannel.java:296)
>        at
> com.webobjects.jdbcadaptor.JDBCChannel.selectAttributes(JDBCChannel.java:220)
>        at
> com.webobjects.eoaccess.EODatabaseChannel._selectWithFetchSpecificationEditingContext(EODatabaseChannel.java:897)
>        at
> com.webobjects.eoaccess.EODatabaseChannel.selectObjectsWithFetchSpecification(EODatabaseChannel.java:234)
>        at
> com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(EODatabaseContext.java:3055)
>        at
> com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3195)
>        at
> com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
>        at
> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
>        at
> com.webobjects.eocontrol.EOSharedEditingContext.bindObjectsWithFetchSpecification(EOSharedEditingContext.java:401)
>        at
> com.webobjects.eoaccess.EODatabaseContext._preloadSharedObjectsWithModel(EODatabaseContext.java:1217)
>        at
> com.webobjects.eoaccess.EODatabaseContext.registeredDatabaseContextForModel(EODatabaseContext.java:1012)
>        at
> com.webobjects.eoaccess.EODatabaseContext.registeredDatabaseContextForModel(EODatabaseContext.java:1033)
>        at
> er.extensions.jdbc.ERXJDBCUtilities.databaseProductName(ERXJDBCUtilities.java:826)
>        at
> er.extensions.migration.ERXMigrator._buildDependenciesForModel(ERXMigrator.java:352)
>        at
> er.extensions.migration.ERXMigrator._buildDependenciesForModelsNamed(ERXMigrator.java:275)
>        at
> er.extensions.migration.ERXMigrator.migrateToLatest(ERXMigrator.java:184)
>        at
> er.extensions.appserver.ERXApplication.finishInitialization(ERXApplication.java:1186)
>        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:597)
>        at
> com.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:122)
>        at
> com.webobjects.foundation.NSNotificationCenter$_Entry.invokeMethod(NSNotificationCenter.java:588)
>        at
> com.webobjects.foundation.NSNotificationCenter.postNotification(NSNotificationCenter.java:532)
>        at
> com.webobjects.foundation.NSNotificationCenter.postNotification(NSNotificationCenter.java:546)
>        at
> com.webobjects.appserver.WOApplication.run(WOApplication.java:1229)
>        at
> er.extensions.appserver.ERXApplication.run(ERXApplication.java:1303)
>        at
> com.webobjects.appserver.WOApplication.main(WOApplication.java:548)
>        at
> er.extensions.appserver.ERXApplication.main(ERXApplication.java:783)
>        at com.example.app.Application.main(Application.java:22)
>
>
>
> Regards,
> yllan
>  _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/johnthuss%40gmail.com
>
> This email sent to [email protected]
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to