mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-28 11:01:59 +00:00
configDB: improve support for postgresql (tnx to Matze)
git-svn-id: https://svn.fhem.de/fhem/trunk@11560 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
16e1537f2e
commit
34343581db
@ -81,12 +81,12 @@ sub CommandConfigdb($$) {
|
|||||||
$source = $dbname;
|
$source = $dbname;
|
||||||
|
|
||||||
} elsif ($dbtype eq 'POSTGRESQL') {
|
} elsif ($dbtype eq 'POSTGRESQL') {
|
||||||
# ($dbname,undef) = split (/;/,$dbconn);
|
($dbname,undef) = split (/;/,$dbconn);
|
||||||
# (undef,$dbname) = split (/=/,$dbname);
|
(undef,$dbname) = split (/=/,$dbname);
|
||||||
# $ret = qx(PGPASSWORD=$dbpass pg_dump -U $dbuser $dbname -f $target);
|
$ret = qx(PGPASSWORD=$dbpass pg_dump -U $dbuser $dbname -f $target);
|
||||||
# return $ret if $ret;
|
return $ret if $ret;
|
||||||
# $source = $dbname;
|
$source = $dbname;
|
||||||
return "configdb dump not yet supported for $dbtype!";
|
# return "configdb dump not yet supported for $dbtype!";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return "configdb dump not supported for $dbtype!";
|
return "configdb dump not supported for $dbtype!";
|
||||||
|
@ -111,6 +111,9 @@
|
|||||||
#
|
#
|
||||||
# 2016-05-28 - added configdb dump (for mysql)
|
# 2016-05-28 - added configdb dump (for mysql)
|
||||||
#
|
#
|
||||||
|
# 2016-05-29 - changed improve support for postgresql (tnx to Matze)
|
||||||
|
# added configdb dump (for postgresql)
|
||||||
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -216,13 +219,11 @@ sub cfgDB_Init() {
|
|||||||
|
|
||||||
my $fhem_dbh = _cfgDB_Connect;
|
my $fhem_dbh = _cfgDB_Connect;
|
||||||
|
|
||||||
eval { $fhem_dbh->do("CREATE EXTENSION \"uuid-ossp\"") if($cfgDB_dbtype eq 'POSTGRESQL'); };
|
|
||||||
|
|
||||||
# create TABLE fhemversions ifnonexistent
|
# create TABLE fhemversions ifnonexistent
|
||||||
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhemversions(VERSION INT, VERSIONUUID CHAR(50))");
|
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhemversions(VERSION INT, VERSIONUUID CHAR(50))");
|
||||||
|
|
||||||
# create TABLE fhemconfig if nonexistent
|
# create TABLE fhemconfig if nonexistent
|
||||||
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhemconfig(COMMAND CHAR(32), DEVICE CHAR(32), P1 CHAR(50), P2 TEXT, VERSION INT, VERSIONUUID CHAR(50))");
|
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhemconfig(COMMAND VARCHAR(32), DEVICE VARCHAR(32), P1 VARCHAR(50), P2 TEXT, VERSION INT, VERSIONUUID CHAR(50))");
|
||||||
# check TABLE fhemconfig already populated
|
# check TABLE fhemconfig already populated
|
||||||
my $count = $fhem_dbh->selectrow_array('SELECT count(*) FROM fhemconfig');
|
my $count = $fhem_dbh->selectrow_array('SELECT count(*) FROM fhemconfig');
|
||||||
if($count < 1) {
|
if($count < 1) {
|
||||||
@ -246,8 +247,8 @@ sub cfgDB_Init() {
|
|||||||
# create TABLE fhembinfilesave if nonexistent
|
# create TABLE fhembinfilesave if nonexistent
|
||||||
if($cfgDB_dbtype eq "MYSQL") {
|
if($cfgDB_dbtype eq "MYSQL") {
|
||||||
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhembinfilesave(filename TEXT, content MEDIUMBLOB)");
|
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhembinfilesave(filename TEXT, content MEDIUMBLOB)");
|
||||||
# my $spaltentyp = $fhem_dbh->do("SHOW FIELDS FROM fhembinfilesave LIKE 'content'");
|
} elsif ($cfgDB_dbtype eq "POSTGRESQL") {
|
||||||
# Log3(undef,1,$spaltentyp);
|
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhembinfilesave(filename TEXT, content bytea)");
|
||||||
} else {
|
} else {
|
||||||
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhembinfilesave(filename TEXT, content BLOB)");
|
$fhem_dbh->do("CREATE TABLE IF NOT EXISTS fhembinfilesave(filename TEXT, content BLOB)");
|
||||||
}
|
}
|
||||||
@ -1036,6 +1037,15 @@ sub _cfgDB_binFileimport($$;$) {
|
|||||||
my $fhem_dbh = _cfgDB_Connect;
|
my $fhem_dbh = _cfgDB_Connect;
|
||||||
$fhem_dbh->do("delete from fhembinfilesave where filename = '$filename'");
|
$fhem_dbh->do("delete from fhembinfilesave where filename = '$filename'");
|
||||||
my $sth = $fhem_dbh->prepare('INSERT INTO fhembinfilesave values (?, ?)');
|
my $sth = $fhem_dbh->prepare('INSERT INTO fhembinfilesave values (?, ?)');
|
||||||
|
|
||||||
|
# add support for postgresql by Matze
|
||||||
|
$sth->bind_param( 1, $filename );
|
||||||
|
if ($cfgDB_dbtype eq "POSTGRESQL") {
|
||||||
|
$sth->bind_param( 2, $blobContent, { pg_type => DBD::Pg::PG_BYTEA() } );
|
||||||
|
} else {
|
||||||
|
$sth->bind_param( 2, $blobContent );
|
||||||
|
}
|
||||||
|
|
||||||
$sth->execute($filename, $blobContent);
|
$sth->execute($filename, $blobContent);
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
$fhem_dbh->commit();
|
$fhem_dbh->commit();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user