configDB: Umzug von SQLite auf MYSQL (Spaltenlänge)

Begonnen von RoBra81, 16 Februar 2019, 08:19:08

Vorheriges Thema - Nächstes Thema

RoBra81

Guten Morgen,

ich bin gerade dabei, mein FHEM umzuziehen und möchte in diesem Zusammenhang von einer SQLIte-Datenbank auf eine MYSQL-Datenbank umziehen. Dafür habe ich einen Dump von der SQLite-Datenbank erstellt und so modifiziert, dass er in MYSQL importiert werden kann. Beim Import kam jedoch der Fehler, dass die Daten in der Spalte P1 der Tabelle fhemconfig zu lang wären. Und tatsächlich wird die Spalte sowohl im SQLite als auch im MYSQL von configDB mit 50 Zeichen angelegt, enthält im Dump von SQLite aber auch Einträge mit 64 Zeichen?! Wie kann das sein? Ich habe die Spalte im MYSQL jetzt mal auf varchar(64) modifiziert, damit der Import erstmal läuft. Kann configDB damit Probleme bekommen?

Vielen Dank
Ronny

betateilchen

Zitat von: RoBra81 am 16 Februar 2019, 08:19:08
tatsächlich wird die Spalte sowohl im SQLite als auch im MYSQL von configDB mit 50 Zeichen angelegt,

Die Tabellen werden von configDB nur dann selbst angelegt, wenn sie in der Datenbank noch nicht vorhanden sind. Wenn man einen Umzug von einem Datenbanksystem zu einem anderen macht, sollte man schon dafür sorgen, dass die Zieldatenbank vor dem Import eines dump-Files existiert.

Was steht denn eigentlich bei Dir in P1 drin, das länger als 50 Zeichen ist? Eigentlich sollten in P1 nur Modulnamen oder Attributnamen stehen. Und als die configDB programmiert wurde, gab es in beiden Fällen keine Namen, die länger als 50 Zeichen sind.

Zitat von: RoBra81 am 16 Februar 2019, 08:19:08
Kann configDB damit Probleme bekommen?

Grundsätzlich nicht. Aber mich würde die Struktur der Tabellen in Deiner sqlite Datenbank interessieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RoBra81

Zitat von: betateilchen am 16 Februar 2019, 14:45:32
Die Tabellen werden von configDB nur dann selbst angelegt, wenn sie in der Datenbank noch nicht vorhanden sind. Wenn man einen Umzug von einem Datenbanksystem zu einem anderen macht, sollte man schon dafür sorgen, dass die Zieldatenbank vor dem Import eines dump-Files existiert.

Dafür habe ich configdb sorgen lassen, indem ich FHEM erstmal mit der Standardkonfiguration starten lassen habe.

Zitat von: betateilchen am 16 Februar 2019, 14:45:32
Was steht denn eigentlich bei Dir in P1 drin, das länger als 50 Zeichen ist? Eigentlich sollten in P1 nur Modulnamen oder Attributnamen stehen. Und als die configDB programmiert wurde, gab es in beiden Fällen keine Namen, die länger als 50 Zeichen sind.

Der Eintrag im Dump-File lautet

INSERT INTO fhemconfig VALUES('attr','Abfallkalender.old','subscribeReading_Schadstoffe_Entsorgungstermine_2018_date','/Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_date',4318,'dd3b0bee87334d03772a9d8ed815880a');


und das listing dazu

define Abfallkalender.old MQTT_DEVICE
attr Abfallkalender.old IODev MQTTBroker
attr Abfallkalender.old autoSubscribeReadings /Abfallkalender.gcal/+
attr Abfallkalender.old room Info->Kalender
attr Abfallkalender.old stateFormat transmission-state
attr Abfallkalender.old subscribeReading_Biomuell_date /Abfallkalender.gcal/Biomuell_date
attr Abfallkalender.old subscribeReading_Biomuell_days /Abfallkalender.gcal/Biomuell_days
attr Abfallkalender.old subscribeReading_Biomuell_daysnext /Abfallkalender.gcal/Biomuell_daysnext
attr Abfallkalender.old subscribeReading_Biomuell_location /Abfallkalender.gcal/Biomuell_location
attr Abfallkalender.old subscribeReading_Biomuell_text /Abfallkalender.gcal/Biomuell_text
attr Abfallkalender.old subscribeReading_Biomuell_url /Abfallkalender.gcal/Biomuell_url
attr Abfallkalender.old subscribeReading_Biomuell_weekday /Abfallkalender.gcal/Biomuell_weekday
attr Abfallkalender.old subscribeReading_Blaue_Tonne_date /Abfallkalender.gcal/Blaue_Tonne_date
attr Abfallkalender.old subscribeReading_Blaue_Tonne_days /Abfallkalender.gcal/Blaue_Tonne_days
attr Abfallkalender.old subscribeReading_Blaue_Tonne_daysnext /Abfallkalender.gcal/Blaue_Tonne_daysnext
attr Abfallkalender.old subscribeReading_Blaue_Tonne_description /Abfallkalender.gcal/Blaue_Tonne_description
attr Abfallkalender.old subscribeReading_Blaue_Tonne_location /Abfallkalender.gcal/Blaue_Tonne_location
attr Abfallkalender.old subscribeReading_Blaue_Tonne_text /Abfallkalender.gcal/Blaue_Tonne_text
attr Abfallkalender.old subscribeReading_Blaue_Tonne_url /Abfallkalender.gcal/Blaue_Tonne_url
attr Abfallkalender.old subscribeReading_Blaue_Tonne_weekday /Abfallkalender.gcal/Blaue_Tonne_weekday
attr Abfallkalender.old subscribeReading_Gelbe_Tonne_date /Abfallkalender.gcal/Gelbe_Tonne_date
attr Abfallkalender.old subscribeReading_Gelbe_Tonne_days /Abfallkalender.gcal/Gelbe_Tonne_days
attr Abfallkalender.old subscribeReading_Gelbe_Tonne_daysnext /Abfallkalender.gcal/Gelbe_Tonne_daysnext
attr Abfallkalender.old subscribeReading_Gelbe_Tonne_description /Abfallkalender.gcal/Gelbe_Tonne_description
attr Abfallkalender.old subscribeReading_Gelbe_Tonne_location /Abfallkalender.gcal/Gelbe_Tonne_location
attr Abfallkalender.old subscribeReading_Gelbe_Tonne_text /Abfallkalender.gcal/Gelbe_Tonne_text
attr Abfallkalender.old subscribeReading_Gelbe_Tonne_url /Abfallkalender.gcal/Gelbe_Tonne_url
attr Abfallkalender.old subscribeReading_Gelbe_Tonne_weekday /Abfallkalender.gcal/Gelbe_Tonne_weekday
attr Abfallkalender.old subscribeReading_Restmuell_date /Abfallkalender.gcal/Restmuell_date
attr Abfallkalender.old subscribeReading_Restmuell_days /Abfallkalender.gcal/Restmuell_days
attr Abfallkalender.old subscribeReading_Restmuell_daysnext /Abfallkalender.gcal/Restmuell_daysnext
attr Abfallkalender.old subscribeReading_Restmuell_location /Abfallkalender.gcal/Restmuell_location
attr Abfallkalender.old subscribeReading_Restmuell_text /Abfallkalender.gcal/Restmuell_text
attr Abfallkalender.old subscribeReading_Restmuell_url /Abfallkalender.gcal/Restmuell_url
attr Abfallkalender.old subscribeReading_Restmuell_weekday /Abfallkalender.gcal/Restmuell_weekday
attr Abfallkalender.old subscribeReading_Schadstoffe_Entsorgungstermine_2018_date /Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_date
attr Abfallkalender.old subscribeReading_Schadstoffe_Entsorgungstermine_2018_days /Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_days
attr Abfallkalender.old subscribeReading_Schadstoffe_Entsorgungstermine_2018_daysnext /Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_daysnext
attr Abfallkalender.old subscribeReading_Schadstoffe_Entsorgungstermine_2018_description /Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_description
attr Abfallkalender.old subscribeReading_Schadstoffe_Entsorgungstermine_2018_location /Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_location
attr Abfallkalender.old subscribeReading_Schadstoffe_Entsorgungstermine_2018_text /Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_text
attr Abfallkalender.old subscribeReading_Schadstoffe_Entsorgungstermine_2018_url /Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_url
attr Abfallkalender.old subscribeReading_Schadstoffe_Entsorgungstermine_2018_weekday /Abfallkalender.gcal/Schadstoffe_Entsorgungstermine_2018_weekday
attr Abfallkalender.old subscribeReading_next_date /Abfallkalender.gcal/next_date
attr Abfallkalender.old subscribeReading_next_days /Abfallkalender.gcal/next_days
attr Abfallkalender.old subscribeReading_next_daysnext /Abfallkalender.gcal/next_daysnext
attr Abfallkalender.old subscribeReading_next_description /Abfallkalender.gcal/next_description
attr Abfallkalender.old subscribeReading_next_location /Abfallkalender.gcal/next_location
attr Abfallkalender.old subscribeReading_next_text /Abfallkalender.gcal/next_text
attr Abfallkalender.old subscribeReading_next_url /Abfallkalender.gcal/next_url
attr Abfallkalender.old subscribeReading_next_weekday /Abfallkalender.gcal/next_weekday


(Ist ein altes Device, das mittlerweile gelöscht ist und nur noch in der configdb-historie existiert)

Zitat von: betateilchen am 16 Februar 2019, 14:45:32
Grundsätzlich nicht. Aber mich würde die Struktur der Tabellen in Deiner sqlite Datenbank interessieren.

Meinst du das:

sqlite> .fullschema
CREATE TABLE fhemversions(VERSION INT, VERSIONUUID CHAR(50));
CREATE TABLE fhemconfig(COMMAND CHAR(32), DEVICE CHAR(32), P1 CHAR(50), P2 TEXT, VERSION INT, VERSIONUUID CHAR(50));
CREATE TABLE fhemstate(stateString TEXT);
CREATE TABLE fhemb64filesave(filename TEXT, content BLOB);
CREATE INDEX config_idx on 'fhemconfig' (versionuuid,version);
/* No STAT tables available */


Ronny

betateilchen

#3
das ist ziemlich gruslig...

subscribeReading_Schadstoffe_Entsorgungstermine_2018_description

sind schon 65 Zeichen, da würde Dir

Zitat von: RoBra81 am 16 Februar 2019, 08:19:08
Ich habe die Spalte im MYSQL jetzt mal auf varchar(64) modifiziert

auch nicht helfen.

Das Standardverhalten von configDB werden ich dahingehend ändern, dass ich die Standardlänge für P1 auf 128 64 Zeichen ändere, in der Hoffnung, dass dies dann ausreichend bleiben sollte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!