diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d43f24..74f0218 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ ##### Removed ##### Fixed - Description-List: Buchstaben in FMS-Kennungen werden nun erkannt und zugelassen [#409](https://github.com/Schrolli91/BOSWatch/issues/409) +- MySQL-Plugin: Volle UTF-8 Kompatibilität für Datenbankstruktur, Verbindung und Darstellung im WebUI [#398](https://github.com/Schrolli91/BOSWatch/issues/398) ##### Security diff --git a/exampleAddOns/simpleWeb/mysql.class.php b/exampleAddOns/simpleWeb/mysql.class.php index a74b4b6..8aa1445 100644 --- a/exampleAddOns/simpleWeb/mysql.class.php +++ b/exampleAddOns/simpleWeb/mysql.class.php @@ -35,6 +35,10 @@ Simple Database Class (C) by Bastian Schroll $this->error("Datenbank nicht gefunden!", mysqli_error($this->conn)); return false; } + + /* Set character set for database connection to utf8mb4 */ + mysqli_query($this->conn, "SET NAMES 'utf8mb4'"); + return true; } diff --git a/plugins/MySQL/MySQL.py b/plugins/MySQL/MySQL.py index 489dbe6..04a8d08 100644 --- a/plugins/MySQL/MySQL.py +++ b/plugins/MySQL/MySQL.py @@ -91,7 +91,7 @@ def run(typ,freq,data): # Connect to MySQL # logging.debug("connect to MySQL") - connection = mysql.connector.connect(host = globalVars.config.get("MySQL","dbserver"), port = globalVars.config.get("MySQL","dbport"), user = globalVars.config.get("MySQL","dbuser"), passwd = globalVars.config.get("MySQL","dbpassword"), db = globalVars.config.get("MySQL","database"), charset='utf8') + connection = mysql.connector.connect(host = globalVars.config.get("MySQL","dbserver"), port = globalVars.config.get("MySQL","dbport"), user = globalVars.config.get("MySQL","dbuser"), passwd = globalVars.config.get("MySQL","dbpassword"), db = globalVars.config.get("MySQL","database"), charset='utf8mb4') cursor = connection.cursor() except: logging.error("cannot connect to MySQL") diff --git a/plugins/MySQL/boswatch.sql b/plugins/MySQL/boswatch.sql index 77f35c8..cd044a8 100644 --- a/plugins/MySQL/boswatch.sql +++ b/plugins/MySQL/boswatch.sql @@ -17,7 +17,7 @@ SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; -- -------------------------------------------------------- @@ -25,8 +25,8 @@ SET time_zone = "+00:00"; -- Datenbank anlegen `boswatch` -- -CREATE DATABASE IF NOT EXISTS boswatch; -USE boswatch; +CREATE DATABASE IF NOT EXISTS 'boswatch' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +USE 'boswatch'; -- -------------------------------------------------------- @@ -53,7 +53,7 @@ CREATE TABLE IF NOT EXISTS `bos_fms` ( `tsi` VARCHAR(3) NOT NULL, `description` TEXT NOT NULL, PRIMARY KEY (`ID`) -) ENGINE=MYISAM DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; +) ENGINE=MYISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=1; -- -------------------------------------------------------- @@ -72,7 +72,7 @@ CREATE TABLE IF NOT EXISTS `bos_pocsag` ( `description` TEXT NOT NULL, PRIMARY KEY (`ID`), KEY `POCSAG_RIC_IDX` (`ric`) -) ENGINE=MYISAM DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; +) ENGINE=MYISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=1; -- rename old columns including little error-prevention #ALTER IGNORE TABLE `bos_pocsag` change `funktion` `function` INT(1); @@ -90,7 +90,7 @@ CREATE TABLE IF NOT EXISTS `bos_zvei` ( `zvei` VARCHAR(5) NOT NULL DEFAULT '0', `description` TEXT NOT NULL, PRIMARY KEY (`ID`) -) ENGINE=MYISAM DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; +) ENGINE=MYISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=1; -- -------------------------------------------------------- @@ -103,7 +103,7 @@ CREATE TABLE IF NOT EXISTS `bos_signal` ( `time` DATETIME NOT NULL, `ric` VARCHAR(7) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`) -) ENGINE=MYISAM DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; +) ENGINE=MYISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=1; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;