• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: ERXSQLHelper
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ERXSQLHelper


  • Subject: Re: ERXSQLHelper
  • From: Timothy Worman <email@hidden>
  • Date: Mon, 12 Jan 2015 14:59:50 -0800

OC:

I don’t know how far you’ve dug - but just in case I’ll throw this out. One of the keys to how all this works is ERXSQLHelper sqlHelper = ERXSQLHelper.newSQLHelper. This returns the vendor specific ERXSQLHelper for your database (Frontbase). DB specific code is there.

You might want to check the inner class:

public static class FrontBaseSQLHelper extends ERXSQLHelper

Just my 2¢, but instead of that large block of code, why not just change some properties, run migrations at app startup, and declare your changes there? Migrations work and you don’t have to reinvent the wheel. Then, if your SQL continues to be incorrect, you know where to focus.

Tim Worman
UCLA GSE&IS


> On Jan 12, 2015, at 2:18 PM, OC <email@hidden> wrote:
>
> P.S. my current environment is
>
> Groovy 2.3.8 / WebObjects 5.4.3 / ERExtensions 6.1.2-SNAPSHOT / Java 1.7.0_13 / Mac OS X 10.8.5 / FrontBase 7.2
>
> On 12. 1. 2015, at 22:56, OC <email@hidden> wrote:
>
>> Theodore,
>>
>> On 12. 1. 2015, at 19:00, Theodore Petrosky <email@hidden> wrote:
>>> have you looked at the migrations?
>>> ERXMigrationTable personTable = database.existingTableNamed("person");
>>> personTable.existingColumnNamed("Foo").renameTo("Bar”);
>>> personTable.newStringColumn(name, width, allowsNull)
>>
>> well... the API looks OK, but in practice it does not seem quite work. Can you (or anybody knowledgeable) please point out what am I doing wrong? Here's my code (sans error checking etc. for better readability)
>>
>> ===
>>       EOObjectStoreCoordinator osc=EOObjectStoreCoordinator.defaultCoordinator()
>>       EODatabaseContext ctxt=ERXEOAccessUtilities.databaseContextForEntityNamed(osc,'DBAuction')
>>       ctxt.lock();
>>       try {
>>           EOAdaptorChannel ach = ctxt.availableChannel().adaptorChannel();
>>           if (!ach.isOpen()) ach.openChannel();
>>           def tables=ach.describeTableNames() // looks like Migration API does not read the current state reliably
>>           EOModel dbModel=ach.describeModelWithTableNames(tables)
>>           ERXMigrationDatabase mdb=nil // created on-demand
>>           mdg.models.each { EOModel localModel ->
>>               localModel.entities.each { EOEntity localEntity ->
>>                   if (localEntity.isAbstractEntity()) return
>>                   String tname=localEntity.externalName()
>>                   EOEntity dbEntity=dbModel.entityNamed(tname)
>>                   ERXMigrationTable mtable=nil // on-demand
>>                   localEntity.attributes.each { EOAttribute localAttribute ->
>>                       String cname=localAttribute.columnName()
>>                       EOAttribute dbAttribute=dbEntity.attributeNamed(cname)
>>                       if (!dbAttribute) {
>>                           println "  adding column $cname ($localAttribute.name): $localAttribute.externalType (VT: $localAttribute.valueType) ..."
>>                           if (!mdb) mdb=ERXMigrationDatabase.database(ach)
>>                           if (!mtable) mtable=mdb.existingTableNamed(tname)
>>                           switch (localAttribute.externalType) {
>> ...
>>                               case 'TIMESTAMP':
>>                                   mtable.newTimestampColumn(cname,YES)
>>                                   break
>>                           }
>>                           println "  - OK"
>>                       }
>>                   }
>>               }
>>           }
>>       } finally {
>>           ctxt.unlock()
>>       }
>> ===
>>
>> but it crashes, printing out
>>
>> ===
>> adding column DC_ID (ID): TIMESTAMP (VT: null) ...
>> 22:42:09.409 INFO  Executing alter table T_AUCTION null DC_ID TIMESTAMP       //log:er.extensions.jdbc.ERXJDBCUtilities [main]
>> ...
>> Caused by: java.lang.RuntimeException: Failed to execute 'alter table T_AUCTION null DC_ID TIMESTAMP'.
>> Caused by: java.sql.SQLException: Syntax error 179. Illegal ALTER TABLE statement.
>> ===
>>
>> Well self-evidently it _is_ an illegal statement, it lacks "add column" having "null" instead; but what's the culprit and how to fix the problem?
>>
>> (Note: I've tried to bump up log levels to
>> log4j.logger.er.extensions.jdbc.ERXJDBCUtilities=TRACE
>> log4j.logger.er.extensions.migration.ERXMigrationDatabase=TRACE
>> log4j.logger.er.extensions.migration.ERXMigrationTable=TRACE
>> log4j.logger.er.extensions.migration.ERXMigrationColumn=TRACE
>> but no more logs occurred anyway.)
>>
>> Thanks,
>> OC
>>
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      (email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: ERXSQLHelper
      • From: OC <email@hidden>
References: 
 >ERXSQLHelper (From: OC <email@hidden>)
 >Re: ERXSQLHelper (From: Theodore Petrosky <email@hidden>)
 >Re: ERXSQLHelper (From: OC <email@hidden>)
 >Re: ERXSQLHelper (From: OC <email@hidden>)

  • Prev by Date: Re: ERXSQLHelper
  • Next by Date: Re: ERXSQLHelper
  • Previous by thread: Re: ERXSQLHelper
  • Next by thread: Re: ERXSQLHelper
  • Index(es):
    • Date
    • Thread