SQL-Datenbank - Fehler bei Erstellung
-
Nach der Installation des Mediathek-Addon erscheint bei mir folgende Fehlermeldung, wenn ich eine SQL-Datenbank als Datenbanktyp auswähle:
“ERROR: 1709 (HY000): Index column size too large. The maximum column size is 767 bytes”.Hier der relevante Abschnitt aus der kodi.log:
“15:44:46.134 T:1772 NOTICE: [plugin.video.mediathekview-0.4.2:Service]: Init (instance id: 688916e6c36efebad1b1638ce0d03327)
15:44:46.141 T:1772 NOTICE: [plugin.video.mediathekview-0.4.2:Updater]: Database driver: External (mysql)
15:44:46.141 T:1772 NOTICE: [plugin.video.mediathekview-0.4.2:StoreMySQL]: Using MySQL connector version 1.1.7
15:44:46.179 T:1772 NOTICE: [plugin.video.mediathekview-0.4.2:StoreMySQL]: === DATABASE mediathekview DOES NOT EXIST. TRYING TO CREATE IT ===
15:44:46.925 T:1772 ERROR: [plugin.video.mediathekview-0.4.2:StoreMySQL]: === DATABASE CREATION ERROR: 1709 (HY000): Index column size too large. The maximum column size is 767 bytes. ===
15:44:46.988 T:1772 NOTICE: [plugin.video.mediathekview-0.4.2:Service]: Starting up… (instance id: 688916e6c36efebad1b1638ce0d03327)”Vermute mal eine falsche Einstellung in der Datenbank.
Kodi läuft auf einem Raspberry-Pi unter Nextcloudpi und benutzt die vorhandene SQL-Datenbank ohne Probleme. -
Hallo zusammen,
zu allererst wäre es mal interessant zu wissen, welche Version von MySQL auf Deinem PI läuft. Ich habe das ganze hier sowohl mit MySQL 5.6 als auch mit 5.7 (jeweils ziemlich neue Versionen) getestet, und hatte keine solche Probleme. Habe auch gerade nochmal mit 5.5.58 getestet, da ich festgestellt hatte, dass ich tatsächlich noch so eine hier laufen hatte, und es hat geklappt:
./mvupdate -v mysql -H 10.65.6.1 -u root -p XXXXX 2018-01-27 18:06:36.654634 NOTICE [mvupdate-0.4.3]: Startup 2018-01-27 18:06:36.654812 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Database driver: External (mysql) 2018-01-27 18:06:36.654860 NOTICE [mvupdate-0.4.3:StoreMySQL]: Using MySQL connector version 2.1.4 2018-01-27 18:06:36.743219 NOTICE [mvupdate-0.4.3:StoreMySQL]: === DATABASE mediathekview DOES NOT EXIST. TRYING TO CREATE IT === 2018-01-27 18:06:37.362647 NOTICE [mvupdate-0.4.3:StoreMySQL]: Database creation successfully completed 2018-01-27 18:06:37.362864 NOTICE [mvupdate-0.4.3]: Starting up... 2018-01-27 18:06:37.422448 NOTICE [mvupdate-0.4.3]: Initiating full update... 2018-01-27 18:06:37.422504 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Opening https://res.mediathekview.de/akt.xml 2018-01-27 18:06:37.611918 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Found mirror http://verteiler1.mediathekview.de/Filmliste-akt.xz (Priority 2) 2018-01-27 18:06:37.611979 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Found mirror http://verteiler2.mediathekview.de/Filmliste-akt.xz (Priority 1) 2018-01-27 18:06:37.612011 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Found mirror http://verteiler3.mediathekview.de/Filmliste-akt.xz (Priority 2) 2018-01-27 18:06:37.612039 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Found mirror http://verteiler4.mediathekview.de/Filmliste-akt.xz (Priority 1) 2018-01-27 18:06:37.612067 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Found mirror http://verteiler5.mediathekview.de/Filmliste-akt.xz (Priority 2) 2018-01-27 18:06:37.612094 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Found mirror http://verteiler6.mediathekview.de/Filmliste-akt.xz (Priority 2) 2018-01-27 18:06:37.612121 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Found mirror https://verteiler.mediathekviewweb.de/Filmliste-akt.xz (Priority 2) 2018-01-27 18:06:37.612145 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Cleaning up old downloads... 2018-01-27 18:06:37.613103 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Trying to download Filmliste-akt.xz from http://verteiler4.mediathekview.de/Filmliste-akt.xz... 2018-01-27 18:06:42.522155 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Trying to decompress xz file... 2018-01-27 18:06:44.844139 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Return 0 2018-01-27 18:06:44.942439 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Starting import of approx. 222724 records from ./Filmliste-akt 2018-01-27 18:06:44.942573 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Initializing update... 2018-01-27 18:06:45.242395 NOTICE [mvupdate-0.4.3:MediathekViewUpdater]: Filmliste dated 27.01.2018, 17:22 ...
Stellt sich nun die Frage, woran es liegen kann. Ich habe mal gegoogelt, und bin auf folgenden Artikel gestoßen.
In meinen Datenbanken habe ich absolut gar nichts an Parametern getuned. Hier aber mal die Einstellungen von denen im Artikel die Rede ist:
MySQL 5.5 Server:
mysql> show global variables like 'innodb_lar%'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | innodb_large_prefix | OFF | +---------------------+-------+ 1 row in set (0.01 sec) mysql> mysql> show global variables like 'innodb_fil%'; +--------------------------+----------+ | Variable_name | Value | +--------------------------+----------+ | innodb_file_format | Antelope | | innodb_file_format_check | ON | | innodb_file_format_max | Antelope | | innodb_file_per_table | OFF | +--------------------------+----------+ 4 rows in set (0.02 sec)
MySQL 5.7 Server:
mysql> show global variables like 'innodb_lar%'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | innodb_large_prefix | ON | +---------------------+-------+ 1 row in set (0.02 sec) mysql> show global variables like 'innodb_fil%'; +--------------------------+-----------+ | Variable_name | Value | +--------------------------+-----------+ | innodb_file_format | Barracuda | | innodb_file_format_check | ON | | innodb_file_format_max | Barracuda | | innodb_file_per_table | ON | | innodb_fill_factor | 100 | +--------------------------+-----------+ 5 rows in set (0.01 sec)
Wie man sehen kann, sind die in beiden Systemen höchst unterschiedlich und trotzdem gibt es kein Problem beim Erstellen der Datenbank,. Hat vielleicht noch jemand hier eine Idee?
-
BTW: Ich bin inzwischen erstaunt, wie viele Benutzer hier die externe SQL Datenbank nutzen. Der Grund, warum ich das eingebaut habe, war, dass ganz am Anfang das ganze nur ein Experiment war, und ich erst mal ein wenig Python Code geschrieben hatte, um mal zu sehen, ob ich die Daten aus MediathekView überhaupt mit einem endlichen Aufwand nutzbar machen konnte. Das ganze lief auf einem Server den ich im RZ hatte und dann hatte ich die ersten Rudimente vom Plugin geschrieben.
Erst als sich der enorme Nutzen zeigte bin ich überhaupt auf die Idee gekommen das ganze zu veröffentlichen und dafür musste die Lösung einfach zu benutzen sein (also kein externer Server für die Datenbank und externe Skripte die die Datenbank befüllen). Es musste also eine interne Datenbank her und zwar eine, die jedes Kodi schon an Bord hat: SQLite. Die SQL Anbindung habe ich dann behalten, weil ich daran hing, und weil es unter gewissen Umständen auch sinnvoll sein kann.
Eine Sache muss aber jedem hier klar sein: in der Regel ist die SQLite Datenbank wesentlich schneller. Das gilt nur dann nicht, wenn das Kodi-System über wenig Speicher bzw. eine erbärmliche I/O-Performance verfügt. Verschiedene Tests haben allerdings ergeben, dass sogar ein Raspberry mit einer einigermaßen schnellen SD Karte eine akzeptable Performance hat. z.B. auf meinem alten ASRock ION 3D von 2011 braucht das vollständige Update im Hintergrund gerade mal 10-12 Minuten…
-
Es läuft MariaDB Version 10.1.23 auf dem Pi.
Das sollte aber wohl doch nicht das Problem sein, oder?Hier mal ein Screenshot:
Irgendwo habe ich gelesen, daß eine falsche Zeichenkodierung bei der Erstellung der Datenbank diesen Fehler hervorufen kann.
Leider bin ich aber ein absoluter SQL Laie und komme nicht richtig weiter.
Vielen Dank aber für die Rückmeldung. Es wäre halt schön, wenn ich meine vorhandene externe Datenbank auch für das Mediathekview Addon nutzen könnte, zumal sowohl Nextcloud als auch Kodi ohne Probleme damit laufen.
-
@tuxpoldo sagte in SQL-Datenbank - Fehler bei Erstellung:
BTW: Ich bin inzwischen erstaunt, wie viele Benutzer hier die externe SQL Datenbank nutzen.
Geht mir auch so. Ich hab schon langsa das Gefühl ich bin der Einzige der keine benutzt. Oder die läuft einfach und es kommen halt nur die Meldungen rein wenn es Probleme gibt.
-
So langsam bin ich mit meinem Latein am Ende… Habe mir gerade MariaDB auf dem Mc installiert:
leo@bookpoldo ~ $ /usr/local/opt/mariadb\@10.1/bin/mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.30-MariaDB Homebrew Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]> SELECT @@version; +-----------------+ | @@version | +-----------------+ | 10.1.30-MariaDB | +-----------------+ 1 row in set (0.00 sec)
Resultat:
12:23:27.412 T:123145330208768 NOTICE: [plugin.video.mediathekview-0.4.3:Service]: Init (instance id: e5bf653daef42ffd48eeb618e3da1557) 12:23:27.417 T:123145330208768 NOTICE: [plugin.video.mediathekview-0.4.3:Updater]: Database driver: External (mysql) 12:23:27.417 T:123145330208768 NOTICE: [plugin.video.mediathekview-0.4.3:StoreMySQL]: Using MySQL connector version 1.1.7 12:23:27.506 T:123145343451136 NOTICE: Skin Helper Service --> WebService - start helper webservice on port 52307 12:23:27.506 T:123145326989312 NOTICE: Skin Helper Service --> Skin Helper Service version 1.1.3 started 12:23:28.039 T:123145326452736 NOTICE: Skin Helper Backgrounds --> BackgroundsUpdater - started 12:23:28.040 T:123145330208768 NOTICE: [plugin.video.mediathekview-0.4.3:StoreMySQL]: Connected to server localhost version 10.1.30-MariaDB 12:23:28.047 T:123145330208768 NOTICE: [plugin.video.mediathekview-0.4.3:StoreMySQL]: === DATABASE mediathekview DOES NOT EXIST. TRYING TO CREATE IT === 12:23:28.190 T:123145330208768 NOTICE: [plugin.video.mediathekview-0.4.3:StoreMySQL]: Database creation successfully completed 12:23:28.195 T:123145330208768 NOTICE: [plugin.video.mediathekview-0.4.3:Service]: Starting up... (instance id: e5bf653daef42ffd48eeb618e3da1557) 12:23:28.200 T:123145330208768 NOTICE: [plugin.video.mediathekview-0.4.3:Service]: Initiating full update... ...
Läuft perfekt…
Irgendwo schlummert was böses in der Konfiguration deines Servers und wir kommen nicht drauf…
-
@tuxpoldo
Ich habe in dem oben erwähnten Artikel noch folgende für mich entscheidende Info entnommen:"At the table level you have to use ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED for Innodb, rows are stored in COMPACT format (ROW_FORMAT=COMPACT) by default. "
Zusammen mit den Tabellen und Stored Procedures aus diesem Post konnte ich das Problem (“Index column size too large. The maximum column size is 767 bytes”) lösen, indem ich den SQL-Befehl zum Erstellen der Tabellen um “ROW_FORMAT=DYNAMIC” ergänzt habe.
-
Hallo zusammen,
in der nächsten Version werden noch einige Änderungen enthalten sein, die das Problem endgültig lösen könnten. Der letzte Beitrag ist auch in Form der folgenden Meldung #73 in die Release-Planung eingeflossen. Die Änderungen werden in kürze im Release v0.5.0 erscheinen.