Stimmt das hatte ich nicht mehr auf dem Schirm, das sollte UTF8 sein:
mariadb.conf.d/50-server.cnf
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
mariadb.conf.d/50-client.cnf
default-character-set = utf8mb4
Stimmt das hatte ich nicht mehr auf dem Schirm, das sollte UTF8 sein:
mariadb.conf.d/50-server.cnf
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
mariadb.conf.d/50-client.cnf
default-character-set = utf8mb4
Alles anzeigenStimmt das hatte ich nicht mehr auf dem Schirm, das sollte UTF8 sein:
mariadb.conf.d/50-server.cnf
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
mariadb.conf.d/50-client.cnf
default-character-set = utf8mb4
mitgelieferte standardsettings - perfekt
Anpassungen sind im git
Ich mußte bei meiner Distro (gentoo) noch
für mysqlepglv.so setzen.
Bei "mysql_update" und "mariadb-update" bekomme ich
Error : Unknown column 'information_schema.INNODB_METRICS.STATUS' in 'field list' Error : View 'sys.metrics' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
Kann das bleiben? Kann man das fixen? Besser mariadb neu einrichten (ohne update von bestehenden mysql dbs)? Oder benötige ich eines oder mehrere useflags aus innodb-lz4, innodb-lzo oder innodb-snappy?
Nicht gleich hauen
Bin auf einen Ubuntu server unterwegs und verwende Mariadb, muss ich noch was nach installieren ?
make[1]: mariadb-config: Command not found
(cd lib && make -s lib)
make[1]: mariadb-config: Command not found
make[2]: mariadb-config: Command not found
make[2]: mariadb-config: Command not found
Compile common ...
make[2]: mariadb-config: Command not found
make[2]: mariadb-config: Command not found
Compile config ...
make[2]: mariadb-config: Command not found
make[2]: mariadb-config: Command not found
Compile db ...
db.c:9:10: fatal error: errmsg.h: No such file or directory
9 | #include <errmsg.h>
| ^~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile:83: db.o] Error 1
make[1]: *** [Makefile:122: hlib] Error 2
Alles anzeigen
Anpassungen sind im git
Für gentoo mußte ich in Make.config mariadb-config in mariadb_config ändern. Distro-spezifisch oder Typo?
Sieht aus wie ein typo.
Sollte das Entfernen der mysql Abhängigkeiten nicht auch in scraper2vdr vorgenommen werden?
Ich habe jetzt mit ganz neuen /var/lib/mysql angefanden, um den innodb Fehler weg zubekommen. Und mit "epgd-tool -new-db && epgd-tool -new-u" alles neu erzeugt. Leider geht jetzt gar nichts mehr: der epgd loopt beim start mit:
Jan 3 22:45:16 adler epgd: Calling mysql_init(807102)
Jan 3 22:45:16 adler epgd: Loading '/etc/epgd/channelmap.conf'
Jan 3 22:45:16 adler epgd: 125 channel mappings read.
Jan 3 22:45:16 adler epgd: Creating function 'getupdflg'
Jan 3 22:45:16 adler epgd: SQL-Error in 'CREATE FUNCTION getupdflg ( master_id INT(11) )$RETURNS CHAR$NOT DETERMINISTIC$BEGIN$DECLARE upd_flg CHAR;$ SET upd_flg = ($ select case$ when ev.source != 'vdr' and ev.starttime <= cm.mergesp and ev.masterid != ev.useid then 'C'$ when ev.source != 'vdr' and ev.starttime <= cm.mergesp and jo.masterid is not Null then 'T'$ when ev.delflg = 'Y' then 'D'$ when ev.source != 'vdr' and ev.starttime <= cm.mergesp and jo.masterid is Null then 'R'$ when ev.source != 'vdr' and ev.starttime > cm.mergesp then 'A'$ when ev.source = 'vdr' and cm.mergesp is Null then 'P'$ when ev.source = 'vdr' and ev.starttime > cm.mergesp then 'I'$ when ev.source = 'vdr' and ev.starttime <= cm.mergesp and ev.masterid = ev.useid then 'A'$ when ev.source = 'vdr' and ev.starttime <= cm.mergesp and ev.masterid != ev.useid then 'L'$ end$from$ events ev$left join$ events jo$on$ ev.masterid = jo.useid and jo.useid != 0 and jo.updflg = 'L'$left join$ (select distinct mergesp,channelid from channelmap where channelmap.source != 'vdr') cm$on$ ev.channelid = cm.channelid$where$ ev.masterid = master_id$ limit 1$);$RETURN upd_flg;$END$' - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (1418)
Jan 3 22:45:16 adler epgd: SQL-Error in 'executeSqlFile()' - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (1418)
Jan 3 22:45:16 adler epgd: Creating function 'getcrosslvr'
Jan 3 22:45:16 adler epgd: SQL-Error in 'CREATE FUNCTION getcrosslvr ( comp1 varchar(300), comp2 varchar(300) )$RETURNS int$NOT DETERMINISTIC$BEGIN$DECLARE ratio DECIMAL(7,2);$DECLARE shorter varchar(300);$DECLARE longer varchar(300);$DECLARE complenght int;$DECLARE crosslv int;$DECLARE crosslvt int;$IF char_length(comp1) = 0 then$ set ratio = 999;$ set shorter = comp1; set longer = comp2; set complenght = char_length(comp2);$ELSEIF char_length(comp2) = 0 then$ set ratio = 999;$ set shorter = comp2; set longer = comp1; set complenght = char_length(comp1);$ELSEIF char_length(comp1) >= char_length(comp2) then$ set ratio = round(char_length(comp1) / char_length(comp2),2);$ set shorter = comp2; set longer = comp1; set complenght = char_length(comp1);$else set ratio = round(char_length(comp2) / char_length(comp1),2);$ set shorter = comp1; set longer = comp2; set complenght = char_length(comp2);$END IF;$IF comp1 is null or comp2 is null then set crosslv = 99;$ELSEIF comp1 = comp2 then set crosslv = 0;$ELSEIF comp1 is Null or comp2 is Null or char_length(comp1) = 0 or char_length(comp2) = 0 then set crosslv = 99;$ELSEIF complenght >= 10 and ratio >= 3.2 then set crosslv = 99;$ELSEIF ratio < 1.5 then set crosslv = epglvr(shorter,longer);$ELSE set crosslvt = epglvr(shorter,substr(longer,1,complenght/2));$ IF crosslvt < 60 then set crosslv = crosslvt;$ ELSE set crosslv = epglvr(substr(longer from complenght/2+1),shorter);$ END IF;$END IF;$RETURN crosslv;$END$' - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (1418)
Jan 3 22:45:16 adler epgd: SQL-Error in 'executeSqlFile()' - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (1418)
Jan 3 22:45:16 adler epgd: Creating function 'getlvrmin'
Jan 3 22:45:16 adler epgd: SQL-Error in 'CREATE FUNCTION getlvrmin ( vdr_starttime int(10), ext_starttime int(10), vdr_duration int(5), ext_duration int(5), lv1 int(3), lv2 int(3), lv3 int(3), lv4 int(3) )$RETURNS int$NOT DETERMINISTIC$BEGIN$DECLARE delta_st int;$DECLARE delta_du int;$DECLARE lv_time int default 0;$DECLARE lv_min int;$DECLARE lv_dur int;$DECLARE lv_sum int;$$IF vdr_duration = ext_duration then set delta_du = 100;$ELSEIF vdr_duration > ext_duration then set delta_du = round(vdr_duration/ext_duration*100,0);$ELSE set delta_du = round(ext_duration/vdr_duration*100,0);$END IF;$$IF delta_du > 184 then set lv_dur = 50;$ELSEIF delta_du > 168 then set lv_dur = 40;$ELSEIF delta_du > 152 then set lv_dur = 30;$ELSEIF delta_du > 136 then set lv_dur = 20;$ELSEIF delta_du > 120 then set lv_dur = 10;$ELSE set lv_dur = 0;$END IF;$$IF vdr_starttime = ext_starttime then set delta_st = 100;$ELSEIF vdr_starttime > ext_starttime then set delta_st = vdr_starttime-ext_starttime;$ELSE set delta_st = ext_starttime-vdr_starttime;$END IF;$$IF delta_st <= 600 then$ IF delta_st > 540 then set lv_time = 50;$ ELSEIF delta_st > 480 then set lv_time = 40;$ ELSEIF delta_st > 420 then set lv_time = 30;$ ELSEIF delta_st > 360 then set lv_time = 20;$ ELSEIF delta_st > 300 then set lv_time = 10;$ ELSE set lv_time = 0;$ END IF;$$ set lv_min = LEAST(lv1,lv2,lv3,lv4);$$ set lv_sum = lv_time + lv_dur + lv_min;$$ELSEIF lv_dur + lv1 + lv4 <= 60 then set lv_sum = 60;$ELSEIF lv1 <= 30 and vdr_starttime = ext_starttime then set lv_sum = 60;$ELSEIF lv1 <= 30 and vdr_duration/abs(vdr_starttime-ext_starttime) >= 2.5 then set lv_sum = 60;$ELSE set lv_sum = 99;$END IF;$$RETURN lv_sum;$$END$' - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (1418)
Jan 3 22:45:16 adler epgd: SQL-Error in 'executeSqlFile()' - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (1418)
Jan 3 22:45:16 adler epgd: Using scraping language de
Jan 3 22:45:16 adler epgd: TVDB scraper connected
Jan 3 22:45:16 adler epgd: MOVIEDB scraper connected
Jan 3 22:45:16 adler epgd: Info: No external events on database, force initial check!
Jan 3 22:45:16 adler epgd: Retry #4 failed, retrying in 60 seconds!
Jan 3 22:45:16 adler epgd: Closing mysql connection and calling mysql_thread_end(807102)
Alles anzeigen
Was übersehe ich?
EDIT: binary logging wird mit skip-bin-log ausgeschaltet - und nicht durch auskommentieren von bin-log.
Sieht aus wie ein typo.
interessant, bei Ubuntu gibt es beides:
root@gate (master u=) ~/build/PLUGINS/vdr-plugin-epg2vdr> which mariadb-config
/usr/bin/mariadb-config
root@gate (master u=) ~/build/PLUGINS/vdr-plugin-epg2vdr> which mariadb_config
/usr/bin/mariadb_config
dann stelle ich es auf die Version mit dem Unterstrich um.
@nvertigo
leg doch mal den user und die datenbank per hand und zu fuss an wie hier beschrieben:
und
hab das eben in einer vm getestet (will ja auch nicht gleich meine ganze db zerschiessen)
da klappt das problemlos mit dem neu anlegen und daten holen von tvsp
Ich habe jetzt mit ganz neuen /var/lib/mysql angefanden, um den innodb Fehler weg zubekommen. Und mit "epgd-tool -new-db && epgd-tool -new-u" alles neu erzeugt. Leider geht jetzt gar nichts mehr: der epgd loopt beim start mit:
CodeJan 3 22:45:16 adler epgd: SQL-Error in 'executeSqlFile()' - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (1418) Jan 3 22:45:16 adler epgd: Using scraping language de Jan 3 22:45:16 adler epgd: TVDB scraper connected Jan 3 22:45:16 adler epgd: MOVIEDB scraper connected Jan 3 22:45:16 adler epgd: Info: No external events on database, force initial check! Jan 3 22:45:16 adler epgd: Retry #4 failed, retrying in 60 seconds! Jan 3 22:45:16 adler epgd: Closing mysql connection and calling mysql_thread_end(807102)
Was übersehe ich?
EDIT: binary logging wird mit skip-bin-log ausgeschaltet - und nicht durch auskommentieren von bin-log.
laut dem log ist das binariy logging noch an, dann geht das nicht
Sollte das Entfernen der mysql Abhängigkeiten nicht auch in scraper2vdr vorgenommen werden?
ich glaube der Entwickler ist nicht mehr aktiv am VDR Projekt, ich kann es mir mal anschauen hab von damals Rechte am git.
Ich mußte bei meiner Distro (gentoo) noch
für mysqlepglv.so setzen.
Bei "mysql_update" und "mariadb-update" bekomme ichCodeError : Unknown column 'information_schema.INNODB_METRICS.STATUS' in 'field list' Error : View 'sys.metrics' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
Kann das bleiben? Kann man das fixen? Besser mariadb neu einrichten (ohne update von bestehenden mysql dbs)? Oder benötige ich eines oder mehrere useflags aus innodb-lz4, innodb-lzo oder innodb-snappy?
Wo musstest du das eintragen?
m.E. sollte man überall das aktuelle Plugin Dir des MariiaDb Servers so abfragen können:
wendel@gate {master u=} ~/build/epgd> mariadb_config --plugindir
/usr/lib/x86_64-linux-gnu/libmariadb3/plugin
Das wird dann im Makefile von mysqlepglv berücksichtigt.
Und wo bzw. von was kommt die Fehlermeldung?
Alles anzeigen@nvertigo
leg doch mal den user und die datenbank per hand und zu fuss an wie hier beschrieben:
und
hab das eben in einer vm getestet (will ja auch nicht gleich meine ganze db zerschiessen)
da klappt das problemlos mit dem neu anlegen und daten holen von tvsp
Genau, das muss wie im README beschrieben manuell gemacht werden da man dazu DB Admin sein muss.
Zu dem Skript epgd-tool kann ich nicht viel sagen, das hat 3po geschrieben und mich gebeten es ins git zu übernehmen - hat aber damals immer funktioniert.
Anpassung auf mariadb_config mit Unterstrich ist im git
scraper2vdr ist angepasst und im git
Ja, binary logging war das Problem: "skip-bin-log" schaltet das binary logging in mariadb ab. "#bin-log" (also einfach auskommentieren) läßt binary-logging aktiv. Besonders gemein: das schlägt nur bei einem epgd first run auf die leere db zu - deshalb habe ich es mit der geupdateten db zuerst nicht gemerkt. (Siehe EDIT in ursprünglicher Nachricht.)
Das plugin_dir mußte ich angeben, als ich versehentlich die alte epgd Version gebaut habe (Änderungen gefetched, aber nicht ausgechecked...).
So, aus den vdr plugins ist nichts mehr gegen libmysqlclient gelinkt:
ingo@adler /usr/local/src/VDR $ ldd /usr/lib64/vdr/plugins/libvdr-* |grep -e mariadb -e mysql
libmariadb.so.3 => /usr/lib64/libmariadb.so.3 (0x00007fb04e308000)
libmariadb.so.3 => /usr/lib64/libmariadb.so.3 (0x00007fa0ccba8000)
ingo@adler /usr/local/src/VDR $
Scheint alles gut zu laufen. Danke horchi!
EDIT:
Nachdem ich die Abhängigkeiten zu libmysqlclient los war, habe ich (für andere Pakete) libmysqlclient auf 8.x geupdated. Ich habe auf meinem System also
Um sicher zu stellen, dass /usr/include/mariadb/mysql.h und nicht /usr/include/mysql/mysql.h inkludiert wird, benötige ich noch
diff --git a/epglv/src/epglv.h b/epglv/src/epglv.h
index 8819fd3..b738d3e 100644
--- a/epglv/src/epglv.h
+++ b/epglv/src/epglv.h
@@ -14,7 +14,7 @@ Copyright (C) 2013 Jörg Wendel
# include <string.h>
#endif
-#include <mysql.h>
+#include <mariadb/mysql.h>
#include <locale.h>
#include <stdio.h>
diff --git a/lib/db.h b/lib/db.h
index f80acdc..a9e5295 100644
--- a/lib/db.h
+++ b/lib/db.h
@@ -16,7 +16,7 @@
#include <stdarg.h>
#include <errno.h>
-#include <mysql.h>
+#include <mariadb/mysql.h>
#include <list>
Alles anzeigen
Das fiel mir nur auf, weil nach dem libmysqlclient-Update, der my_bool Fehler hoch poppte - solange ich die alte libmysqlclient-Version (5.x oder 6.x) hatte fiel das gar nicht auf.
Ich denke, dass man das include konditional (je nachdem, ob mysql oder mariadb benutzt wird) gesetzt werden muss.
Herzlichen Dank für Deine Arbeit an den Quellen und Deinen Support.
skip-bin-log habe ich hier (mariadb-server 10.5) noch nicht aktivieren müssen, guter Hinweis für das nächste Update.
Mit #include <mariadb/mysql.h> baut es definitiv nicht mehr mit mysql, daher möchte ich das ungern übernehmen.
Es sollte via dem Makefile bereits das richtige verwendet werden:
root@gate/etc/mysql> mariadb_config --include
-I/usr/include/mariadb -I/usr/include/mariadb/mysql
da der Header noch an anderen Stellen so eingebunden wird scheint das ja generell zu klappen. Klappt das bei die speziell bei dem epglv nicht?
epglv/Makefile ist bei dir aktuell und es steht das drin?:
Ich glaube das Problem ist Zeile 6 bei den flags: Compiler options sind last match - aber der Preprocessor hat bei den Includes first match. Können die Zeilen 4 -6 nicht weg, wenn die Zeilen 7 und 8 greifen?
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!