Make sure character set of events, states tables is utf8 (#56012)

* Make sure character set of events, states tables is utf8

* Pylint

* Apply suggestions from code review
This commit is contained in:
Erik Montnemery 2021-09-09 19:26:28 +02:00 committed by GitHub
parent 1b0e014783
commit 88dbc6373f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,5 @@
"""Schema migration helpers.""" """Schema migration helpers."""
import contextlib
from datetime import timedelta from datetime import timedelta
import logging import logging
@ -509,15 +510,14 @@ def _apply_update(engine, session, new_version, old_version): # noqa: C901
) )
# Try to change the character set of the statistic_meta table # Try to change the character set of the statistic_meta table
if engine.dialect.name == "mysql": if engine.dialect.name == "mysql":
try: for table in ("events", "states", "statistics_meta"):
connection.execute( with contextlib.suppress(SQLAlchemyError):
text( connection.execute(
"ALTER TABLE statistics_meta CONVERT TO " text(
"CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" f"ALTER TABLE {table} CONVERT TO "
"CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
)
) )
)
except SQLAlchemyError:
pass
else: else:
raise ValueError(f"No schema migration defined for version {new_version}") raise ValueError(f"No schema migration defined for version {new_version}")