@@ -274,7 +274,10 @@ def post_init(self):
274274 We should now confirm that the schema defined by our "classes"
275275 attribute actually matches the schema in the database.
276276 """
277- save = 0
277+
278+ # upgrade the database for column type changes, new internal
279+ # tables, etc.
280+ save = self .upgrade_db ()
278281
279282 # handle changes in the schema
280283 tables = self .database_schema ['tables' ]
@@ -295,10 +298,6 @@ def post_init(self):
295298 del tables [classname ]
296299 save = 1
297300
298- # now upgrade the database for column type changes, new internal
299- # tables, etc.
300- save = save | self .upgrade_db ()
301-
302301 # update the database version of the schema
303302 if save :
304303 self .save_dbschema ()
@@ -345,9 +344,11 @@ def upgrade_db(self):
345344 self .fix_version_2_tables ()
346345
347346 if version < 4 :
347+ self .log_info ('upgrade to version 4' )
348348 self .fix_version_3_tables ()
349349
350350 if version < 5 :
351+ self .log_info ('upgrade to version 5' )
351352 self .fix_version_4_tables ()
352353
353354 self .database_schema ['version' ] = self .current_db_version
@@ -645,7 +646,12 @@ def create_class_table_indexes(self, spec):
645646 def add_class_key_required_unique_constraint (self , cn , key ):
646647 sql = '''create unique index _%s_key_retired_idx
647648 on _%s(__retired__, _%s)''' % (cn , cn , key )
648- self .sql (sql )
649+ try :
650+ self .sql (sql )
651+ except StandardError :
652+ # XXX catch e.g.:
653+ # _sqlite.DatabaseError: index _status_key_retired_idx already exists
654+ pass
649655
650656 def drop_class_table_indexes (self , cn , key ):
651657 # drop the old table indexes first
0 commit comments