Skip to content

Commit

Permalink
Change mysql schema from latin1 to utf8 .
Browse files Browse the repository at this point in the history
fix bug #1086659

Change-Id: I599cf23f03ddec612b9f9c64fcb2c2558aaffba7
  • Loading branch information
Yaguang Tang committed Dec 6, 2012
1 parent cc50ede commit 1b64551
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
@@ -0,0 +1,46 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4

# Copyright 2012 Canonical.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

from sqlalchemy import MetaData


def upgrade(migrate_engine):

if migrate_engine.name == "mysql":
tables = ['meter', 'user', 'resource', 'project', 'source',
'sourceassoc']
sql = "SET foreign_key_checks = 0;"

for table in tables:
sql += "ALTER TABLE %s CONVERT TO CHARACTER SET utf8;" % table
sql += "SET foreign_key_checks = 1;"
sql += "ALTER DATABASE %s DEFAULT CHARACTER SET utf8;" \
% migrate_engine.url.database
migrate_engine.execute(sql)


def downgrade(migrate_engine):
# Operations to reverse the above upgrade go here.
if migrate_engine.name == "mysql":
tables = ['meter', 'user', 'resource', 'project', 'source',
'sourceassoc']
sql = "SET foreign_key_checks = 0;"

for table in tables:
sql += "ALTER TABLE %s CONVERT TO CHARACTER SET latin1;" % table
sql += "SET foreign_key_checks = 1;"
sql += "ALTER DATABASE %s DEFAULT CHARACTER SET latin1;" \
% migrate_engine.url.database
3 changes: 2 additions & 1 deletion ceilometer/storage/sqlalchemy/models.py
Expand Up @@ -41,7 +41,8 @@
def table_args():
engine_name = urlparse(cfg.CONF.database_connection).scheme
if engine_name == 'mysql':
return {'mysql_engine': cfg.CONF.mysql_engine}
return {'mysql_engine': cfg.CONF.mysql_engine,
'mysql_charset': utf8}
return None


Expand Down

0 comments on commit 1b64551

Please sign in to comment.