From e67675b745899fd4119774462f13a1ad19d6e3ae Mon Sep 17 00:00:00 2001 From: Jacob Laursen Date: Sat, 27 Apr 2024 10:25:46 +0200 Subject: [PATCH] Reduce the default character limit for VARCHAR columns in MySQL (#16680) Resolves #13920 Resolves #16678 Signed-off-by: Jacob Laursen --- .../openhab/persistence/jdbc/internal/db/JdbcMariadbDAO.java | 4 +++- .../openhab/persistence/jdbc/internal/db/JdbcMysqlDAO.java | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMariadbDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMariadbDAO.java index eedba65f28b..916bbdfb378 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMariadbDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMariadbDAO.java @@ -56,8 +56,10 @@ public class JdbcMariadbDAO extends JdbcBaseDAO { */ private void initSqlTypes() { logger.debug("JDBC::initSqlTypes: Initialize the type array"); + + // MariaDB using utf-8 max = 16383, using 16383-128 = 16255 sqlTypes.put("IMAGEITEM", "VARCHAR(16255)"); - sqlTypes.put("STRINGITEM", "VARCHAR(16255)"); // MariaDB using utf-8 max = 16383, using 16383-128 = 16255 + sqlTypes.put("STRINGITEM", "VARCHAR(16255)"); } /** diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMysqlDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMysqlDAO.java index 43b9b447274..7c30768b2ca 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMysqlDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMysqlDAO.java @@ -60,7 +60,10 @@ public class JdbcMysqlDAO extends JdbcBaseDAO { */ private void initSqlTypes() { logger.debug("JDBC::initSqlTypes: Initialize the type array"); - sqlTypes.put("STRINGITEM", "VARCHAR(21717)");// mysql using utf-8 max 65535/3 = 21845, using 21845-128 = 21717 + + // MySQL using utf8mb4 max 65535/4 = 16383, using 16383-128 = 16255 + sqlTypes.put("IMAGEITEM", "VARCHAR(16255)"); + sqlTypes.put("STRINGITEM", "VARCHAR(16255)"); } /**