Fix existing migrations to create utf-8 tables for MySQL DB

oslo.db mandates all tables should be created with utf-8 charset
when using MySQL DB. We added an option (deprecated) to skip this
sanity check and it was subsequently removed in Liberty.

This patch fixes existing migration scripts to create tables with
utf-8 charset. Since oslo.db does a sanity check before running
the migrations, it's safe to assume that only new tables created
since the previous migration will be affected.

Closes-bug: #1279000

Change-Id: Ia31dc9e5d4494d1b9633f916fa6e2704d33dffb0
This commit is contained in:
Sabari Kumar Murugesan 2015-07-29 10:06:46 -07:00
parent 5aa1fb1f38
commit e5d10c3c1b
12 changed files with 25 additions and 5 deletions

View File

@ -62,5 +62,4 @@ def db_sync(version=None, init_version=0, engine=None):
return get_backend().db_sync(engine=engine,
abs_path=MIGRATE_REPO_PATH,
version=version,
init_version=init_version,
sanity_check=False)
init_version=init_version)

View File

@ -42,6 +42,7 @@ def define_images_table(meta):
default=False,
index=True),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
return images

View File

@ -60,6 +60,7 @@ def define_image_properties_table(meta):
UniqueConstraint('image_id', 'key',
**constr_kwargs),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
if meta.bind.name != 'ibm_db_sa':

View File

@ -71,6 +71,7 @@ def get_image_members_table(meta):
default=False,
index=True),
UniqueConstraint('image_id', 'member'),
mysql_charset='utf8',
mysql_engine='InnoDB',
extend_existing=True)

View File

@ -46,7 +46,8 @@ def define_image_tags_table(meta):
glance_schema.Boolean(),
nullable=False,
default=False),
mysql_engine='InnoDB')
mysql_engine='InnoDB',
mysql_charset='utf8')
schema.Index('ix_image_tags_image_id',
image_tags.c.image_id)

View File

@ -50,6 +50,8 @@ def upgrade(migrate_engine):
nullable=False,
default=False,
index=True),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
schema.create_tables([image_locations_table])

View File

@ -39,6 +39,7 @@ def define_tasks_table(meta):
nullable=False,
default=False),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
Index('ix_tasks_type', tasks.c.type)

View File

@ -37,7 +37,8 @@ def define_task_info_table(meta):
Column('input', Text()),
Column('result', Text()),
Column('message', Text()),
mysql_engine='InnoDB')
mysql_engine='InnoDB',
mysql_charset='utf8')
return task_info

View File

@ -66,6 +66,7 @@ def define_metadef_namespaces_table(meta):
Column('updated_at', DateTime()),
UniqueConstraint('namespace', **_constr_kwargs),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
if meta.bind.name != 'ibm_db_sa':
@ -95,6 +96,7 @@ def define_metadef_objects_table(meta):
UniqueConstraint('namespace_id', 'name',
**_constr_kwargs),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
if meta.bind.name != 'ibm_db_sa':
@ -123,6 +125,7 @@ def define_metadef_properties_table(meta):
Column('updated_at', DateTime()),
UniqueConstraint('namespace_id', 'name', **_constr_kwargs),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
if meta.bind.name != 'ibm_db_sa':
@ -149,6 +152,7 @@ def define_metadef_resource_types_table(meta):
Column('updated_at', DateTime()),
UniqueConstraint('name', **_constr_kwargs),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
if meta.bind.name != 'ibm_db_sa':
@ -180,6 +184,7 @@ def define_metadef_namespace_resource_types_table(meta):
UniqueConstraint('resource_type_id', 'namespace_id',
**_constr_kwargs),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
if meta.bind.name != 'ibm_db_sa':

View File

@ -33,6 +33,7 @@ def define_metadef_tags_table(meta):
UniqueConstraint('namespace_id', 'name',
**_constr_kwargs),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=False)
if meta.bind.name != 'ibm_db_sa':

View File

@ -44,6 +44,7 @@ def define_artifacts_table(meta):
Column('deleted_at', DateTime()),
Column('published_at', DateTime()),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
Index('ix_artifact_name_and_version', artifacts.c.name,
@ -69,6 +70,7 @@ def define_artifact_tags_table(meta):
Column('updated_at', DateTime(),
nullable=False),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
Index('ix_artifact_tags_artifact_id', artifact_tags.c.artifact_id)
@ -101,6 +103,7 @@ def define_artifact_dependencies_table(meta):
Column('updated_at', DateTime(),
nullable=False),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
Index('ix_artifact_dependencies_source_id',
@ -132,6 +135,7 @@ def define_artifact_blobs_table(meta):
Column('updated_at', DateTime(),
nullable=False),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
Index('ix_artifact_blobs_artifact_id',
artifact_blobs.c.artifact_id)
@ -162,6 +166,7 @@ def define_artifact_properties_table(meta):
nullable=False),
Column('position', Integer()),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
Index('ix_artifact_properties_artifact_id',
artifact_properties.c.artifact_id)
@ -187,6 +192,7 @@ def define_artifact_blob_locations_table(meta):
Column('status', String(36),
nullable=True),
mysql_engine='InnoDB',
mysql_charset='utf8',
extend_existing=True)
Index('ix_artifact_blob_locations_blob_id',
artifact_blob_locations.c.blob_id)

View File

@ -126,7 +126,8 @@ class MigrationsMixin(test_migrations.WalkVersionsMixin):
sqlalchemy.Boolean(),
nullable=False,
default=False),
mysql_engine='InnoDB')
mysql_engine='InnoDB',
mysql_charset='utf8')
images_001.create()
def test_version_control_existing_db(self):