Patch 033 migration to work w/ MySQL 5.6

With MySQL 5.6 setup to use UTF-8 for everything, the 033 migration
will fail. This is because a VARCHAR(256) cannot be indexed in UTF-8
databases. In versions of MySQL before 5.6, this produced a warning and
a truncated, less-useful index. In 5.6 it was changed to an error.

We will reduce these columns further to 64 bytes in the model in a
subsequent fix. For now, we will just create the table with 64 character
columns on new systems, which will allow this migration to work properly
on mysql-5.6. There is no danger of overflow, as 64 chars is what Keystone
uses for them anyway.

Change-Id: I27b9c61828301ba8c392b3d316f656641af753bc
Closes-Bug: #1316646
This commit is contained in:
Clint Byrum 2014-05-06 10:48:36 -07:00
parent bfa6a2df5e
commit db0a7fe91d
2 changed files with 4 additions and 4 deletions

View File

@ -33,7 +33,7 @@ def upgrade(migrate_engine):
sqlalchemy.Column('group', sqlalchemy.String(255)),
sqlalchemy.Column('config', LongText),
sqlalchemy.Column('io', Json),
sqlalchemy.Column('tenant', sqlalchemy.String(256),
sqlalchemy.Column('tenant', sqlalchemy.String(64),
nullable=False,
index=True),
mysql_engine='InnoDB',
@ -62,7 +62,7 @@ def upgrade(migrate_engine):
sqlalchemy.Column('action', sqlalchemy.String(255)),
sqlalchemy.Column('status', sqlalchemy.String(255)),
sqlalchemy.Column('status_reason', sqlalchemy.String(255)),
sqlalchemy.Column('tenant', sqlalchemy.String(256),
sqlalchemy.Column('tenant', sqlalchemy.String(64),
nullable=False,
index=True),
mysql_engine='InnoDB',

View File

@ -296,7 +296,7 @@ class SoftwareConfig(BASE, HeatBase):
group = sqlalchemy.Column('group', sqlalchemy.String(255))
config = sqlalchemy.Column('config', Json)
tenant = sqlalchemy.Column(
'tenant', sqlalchemy.String(256), nullable=False)
'tenant', sqlalchemy.String(64), nullable=False)
class SoftwareDeployment(BASE, HeatBase, StateAware):
@ -320,7 +320,7 @@ class SoftwareDeployment(BASE, HeatBase, StateAware):
input_values = sqlalchemy.Column('input_values', Json)
output_values = sqlalchemy.Column('output_values', Json)
tenant = sqlalchemy.Column(
'tenant', sqlalchemy.String(256), nullable=False)
'tenant', sqlalchemy.String(64), nullable=False)
stack_user_project_id = sqlalchemy.Column(sqlalchemy.String(64),
nullable=True)