From 1f57cdf5a7c546925a95860e5ea0686289f9a4f9 Mon Sep 17 00:00:00 2001 From: betateilchen Date: Mon, 17 Mar 2025 14:02:19 +0000 Subject: [PATCH] configDB: add support for mariadb drivers git-svn-id: https://svn.fhem.de/fhem/trunk@29761 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_configdb.pm | 2 ++ fhem/configDB.pm | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/fhem/FHEM/98_configdb.pm b/fhem/FHEM/98_configdb.pm index bc01a3d94..4d86a6059 100644 --- a/fhem/FHEM/98_configdb.pm +++ b/fhem/FHEM/98_configdb.pm @@ -248,6 +248,8 @@ sub _cfgDB_readConfig() { $cfgDB_dbtype ="POSTGRESQL"; } elsif ($cfgDB_dbconn =~ m/mysql:/i) { $cfgDB_dbtype = "MYSQL"; + } elsif ($cfgDB_dbconn =~ m/mariadb:/i) { + $cfgDB_dbtype = "MARIADB"; } elsif ($cfgDB_dbconn =~ m/sqlite:/i) { $cfgDB_dbtype = "SQLITE"; } else { diff --git a/fhem/configDB.pm b/fhem/configDB.pm index 6c64f9115..a2305cd61 100644 --- a/fhem/configDB.pm +++ b/fhem/configDB.pm @@ -245,6 +245,7 @@ sub _cfgDB_dump; sub _cfgDB_knownAttr; sub _cfgDB_deleteRF; sub _cfgDB_deleteStatefiles; +sub _cfgDB_isMysqlType; ################################################## # Read configuration file for DB connection @@ -297,6 +298,8 @@ if($cfgDB_dbconn =~ m/pg:/i) { $cfgDB_dbtype ="POSTGRESQL"; } elsif ($cfgDB_dbconn =~ m/mysql:/i) { $cfgDB_dbtype = "MYSQL"; + } elsif ($cfgDB_dbconn =~ m/mariadb:/i) { + $cfgDB_dbtype = "MARIADB"; } elsif ($cfgDB_dbconn =~ m/sqlite:/i) { $cfgDB_dbtype = "SQLITE"; (undef,$cfgDB_filename) = split(/=/,$cfgDB_dbconn); @@ -364,7 +367,8 @@ sub cfgDB_Init { $fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhemstate(stateString TEXT)"); # create TABLE fhemb64filesave if nonexistent - if($cfgDB_dbtype eq "MYSQL") { +# if($cfgDB_dbtype eq "MYSQL") { + if(_cfgDB_isMysqlType($cfgDB_dbtype)) { $fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhemb64filesave(filename TEXT, content MEDIUMBLOB)"); } elsif ($cfgDB_dbtype eq "POSTGRESQL") { $fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhemb64filesave(filename TEXT, content bytea)"); @@ -1231,7 +1235,8 @@ sub _cfgDB_dump { $ret = qx($dumpcmd); return $ret if $ret; # return error message if available - } elsif ($dbtype eq 'MYSQL') { +# } elsif ($dbtype eq 'MYSQL') { + } elsif (_cfgDB_isMysqlType($dbtype)) { ($dbname,$dbhostname,$dbport) = split (/;/,$dbconn); $dbport //= '=3306'; (undef,$dbname) = split (/=/,$dbname); @@ -1334,6 +1339,10 @@ sub _cfgDB_deleteStatefiles { $fhem_dbh->disconnect(); } +sub _cfgDB_isMysqlType { + my $type = shift(); + return ($type eq 'MYSQL' || $type eq 'MARIADB'); +} ################################################## # functions used for file handling # called by 98_configdb.pm