From 53b3d2ee87c35f08008f035414538e9858a2f6b1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 10 Jun 2022 12:49:58 -0700 Subject: [PATCH] Guard MySQL size calculation returning None (#73331) --- .../recorder/system_health/mysql.py | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/recorder/system_health/mysql.py b/homeassistant/components/recorder/system_health/mysql.py index 52ea06f61c3..747a806c227 100644 --- a/homeassistant/components/recorder/system_health/mysql.py +++ b/homeassistant/components/recorder/system_health/mysql.py @@ -5,15 +5,18 @@ from sqlalchemy import text from sqlalchemy.orm.session import Session -def db_size_bytes(session: Session, database_name: str) -> float: +def db_size_bytes(session: Session, database_name: str) -> float | None: """Get the mysql database size.""" - return float( - session.execute( - text( - "SELECT ROUND(SUM(DATA_LENGTH + INDEX_LENGTH), 2) " - "FROM information_schema.TABLES WHERE " - "TABLE_SCHEMA=:database_name" - ), - {"database_name": database_name}, - ).first()[0] - ) + size = session.execute( + text( + "SELECT ROUND(SUM(DATA_LENGTH + INDEX_LENGTH), 2) " + "FROM information_schema.TABLES WHERE " + "TABLE_SCHEMA=:database_name" + ), + {"database_name": database_name}, + ).first()[0] + + if size is None: + return None + + return float(size)