Fix new services implementation 9
This commit is contained in:
@@ -154,11 +154,17 @@ class DatabaseManager:
|
||||
try:
|
||||
target_metadata = metadata or Base.metadata
|
||||
async with self.async_engine.begin() as conn:
|
||||
await conn.run_sync(target_metadata.create_all)
|
||||
await conn.run_sync(target_metadata.create_all, checkfirst=True)
|
||||
logger.info("Database tables created successfully", service=self.service_name)
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to create tables: {e}", service=self.service_name)
|
||||
raise DatabaseError(f"Table creation failed: {str(e)}")
|
||||
# Check if it's a "relation already exists" error which can be safely ignored
|
||||
error_str = str(e).lower()
|
||||
if "already exists" in error_str or "duplicate" in error_str:
|
||||
logger.warning(f"Some database objects already exist - continuing: {e}", service=self.service_name)
|
||||
logger.info("Database tables creation completed (some already existed)", service=self.service_name)
|
||||
else:
|
||||
logger.error(f"Failed to create tables: {e}", service=self.service_name)
|
||||
raise DatabaseError(f"Table creation failed: {str(e)}")
|
||||
|
||||
async def drop_tables(self, metadata=None):
|
||||
"""Drop database tables"""
|
||||
|
||||
Reference in New Issue
Block a user