Sorry for taking so long to reply here. I did a little debugging, and
I see 2 reasons why the upgrade doesn't happen (I haven't looked at
the 1.3.148 source code which may have fixed all this).

First, the first time Driver.connect() decides to call
DbUpgrade.upgrade(), it passes in the url that it got from the jdbc
url. this is used to check a static Map called runningConversions to
see if it has been added as a key.
The first time it hasn't, so the url is added as a key and the
"instance" is used as the value. Then DbUpgradeFromVersion1.upgrade()
is called.

In  DbUpgradeFromVersion1.upgrade(), after "script to" has run,
DbUpgradeFromVersion1.upgrade() again calls
DriverManager.getConnection() to get a connection in order to run
"runscript from" and by way of Driver.connect() finds itself again in
DbUpgrade.upgrade() with a passed in url. It checks this url with the
runningConversions map but doesn't find it and again calls
DbUpgradeFromVersion1.upgrade().

This is wrong. It should have found that it was already migrating and
just returned. The reason for the incorrect behavior is that the url
passed in the second time is like the first url but has
unwanted properties stripped from it and then some extra properties
added ";UNDO_LOG=0;LOG=0;LOCK_MODE=0;", so this code would never have
worked unless the original url had ";UNDO_LOG=0;LOG=0;LOCK_MODE=0;" at
the end with none of the other properties that are stripped out. I
fixed this. but.....

Second, Once I fixed this I discovered that the code that renames the
dbname.data.db and dbname.index.db files to dbname.data.db.backup,
dbname.index.backup was failing (this is on windows and it said the
files were in use) so when that second getConnection() ran expecting
to not find an existing database and create a new 1.2 database,
instead finds the old database, tries to read it and errors out saying
the file header is wrong.
Two problems here, first obviously no check is made of the return
value of the renames to see if they succeeded, and secondly, why is
the file considered still in use?

Need to figure out why the 1.1 database files are still in use. the
connection was closed. I even tried unloading the old 1.1 driver but
that didn't work (this is in DbUpgradeFromVersion1.upgrade()).

???

On Feb 5, 2:57 am, Thomas Mueller <[email protected]>
wrote:
> Hi,
>
> Could you post the complete stack trace including all 'root cause'
> traces? Could you also describe exactly what you do so that we can
> reproduce it?
>
> The upgrade does rename the directory, but _after_ creating the
> script. So the directory shouldn't be needed afterwards.
>
> Regards,
> Thomas

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to