Force MySQL to use InnoDB/utf8

When using Ceilometer without InnoDB you'll get an exception
in migration 10:

Specified key was too long; max key length is 1000 bytes') 'CREATE INDEX
idx_meter_rid_cname ON meter (resource_id, counter_name)'

With most OpenStack projects we avoid editing old (historical) migrations
but I think the use case is slightly different with Ceilometer and
MySQL users could probably recreate their database from scratch if
they hit this error. As such in this commit we upgrade the initial
table scripts in 001 so that users of older MySQL versions where
InnoDB isn't the default (version 5.1 etc.) can have a working
Ceilometer out of the box.

Fixes LP Bug #1217802.

Change-Id: Ie2c2ae2d3b7a5575b02fe8c3cb148aa2e9624c62
This commit is contained in:
Dan Prince 2013-09-05 14:58:42 -04:00
parent 90a556ef33
commit a4ee934b8d
4 changed files with 30 additions and 9 deletions

View File

@ -38,7 +38,9 @@ meter = Table(
Column('counter_duration', Integer),
Column('timestamp', DateTime(timezone=False), index=True),
Column('message_signature', String(1000)),
Column('message_id', String(1000))
Column('message_id', String(1000)),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
resource = Table(
@ -48,17 +50,23 @@ resource = Table(
Column('project_id', String(255), index=True),
Column('received_timestamp', DateTime(timezone=False)),
Column('timestamp', DateTime(timezone=False), index=True),
Column('user_id', String(255), index=True)
Column('user_id', String(255), index=True),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
user = Table(
'user', meta,
Column('id', String(255), primary_key=True, index=True),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
project = Table(
'project', meta,
Column('id', String(255), primary_key=True, index=True),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
sourceassoc = Table(
@ -71,13 +79,17 @@ sourceassoc = Table(
Index('idx_su', 'source_id', 'user_id'),
Index('idx_sp', 'source_id', 'project_id'),
Index('idx_sr', 'source_id', 'resource_id'),
Index('idx_sm', 'source_id', 'meter_id')
Index('idx_sm', 'source_id', 'meter_id'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
source = Table(
'source', meta,
Column('id', String(255), primary_key=True, index=True),
UniqueConstraint('id')
UniqueConstraint('id'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)

View File

@ -43,7 +43,9 @@ alarm = Table(
Column('ok_actions', Text()),
Column('alarm_actions', Text()),
Column('insufficient_data_actions', Text()),
Column('matching_metadata', Text()))
Column('matching_metadata', Text()),
mysql_engine='InnoDB',
mysql_charset='utf8')
def upgrade(migrate_engine):

View File

@ -27,7 +27,9 @@ meta = MetaData()
unique_name = Table(
'unique_name', meta,
Column('id', Integer, primary_key=True),
Column('key', String(32), index=True)
Column('key', String(32), index=True),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
@ -35,7 +37,9 @@ event = Table(
'event', meta,
Column('id', Integer, primary_key=True),
Column('generated', Float(asdecimal=True), index=True),
Column('unique_name_id', Integer, ForeignKey('unique_name.id'))
Column('unique_name_id', Integer, ForeignKey('unique_name.id')),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
@ -49,7 +53,9 @@ trait = Table(
Column('t_int', Integer, nullable=True, default=None, index=True),
Column('t_datetime', Float(asdecimal=True), nullable=True, default=None,
index=True),
Column('event_id', Integer, ForeignKey('event.id'))
Column('event_id', Integer, ForeignKey('event.id')),
mysql_engine='InnoDB',
mysql_charset='utf8',
)

View File

@ -39,7 +39,8 @@ def upgrade(migrate_engine):
Column('type', String(20)),
Column('detail', String(255)),
Column('timestamp', DateTime(timezone=False)),
mysql_engine='InnoDB')
mysql_engine='InnoDB',
mysql_charset='utf8')
alarm_history.create()