From f3cc688405cbfa386f6ee4b40da33c13a415a92d Mon Sep 17 00:00:00 2001 From: Angus Lees Date: Thu, 31 Jul 2014 14:03:45 +1000 Subject: [PATCH] Issue multiple SQL statements in separate engine.execute() calls Some sqlalchemy drivers (eg: mysqlconnector) don't support engine.execute("sql stmt 1; sql stmt 2;") and require a separate execute() call for each SQL statement. After discussions with sqlalchemy author, he confirmed it would be better to fix callers rather than attempt to patch in support for multiple statements. With this patch, nova-manage db sync succeeds using mysqlconnector. Change-Id: I57e6ecdafe90110eaffe757f0ef0bf7b41b0f3e3 --- .../db/sqlalchemy/migrate_repo/versions/216_havana.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py b/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py index 1712784e4b..0469e5a265 100644 --- a/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py +++ b/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py @@ -1536,13 +1536,14 @@ def upgrade(migrate_engine): refcolumns=fkey_pair[1]) fkey.create() - if migrate_engine.name == "mysql": + if migrate_engine.name == 'mysql': # In Folsom we explicitly converted migrate_version to UTF8. - sql = "ALTER TABLE migrate_version CONVERT TO CHARACTER SET utf8;" + migrate_engine.execute( + 'ALTER TABLE migrate_version CONVERT TO CHARACTER SET utf8') # Set default DB charset to UTF8. - sql += "ALTER DATABASE %s DEFAULT CHARACTER SET utf8;" % \ - migrate_engine.url.database - migrate_engine.execute(sql) + migrate_engine.execute( + 'ALTER DATABASE %s DEFAULT CHARACTER SET utf8' % + migrate_engine.url.database) _create_shadow_tables(migrate_engine)