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.


  • Entwickler

    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?


  • Entwickler

    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:

    0_1517077879736_Unbenannt.JPG

    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.


  • Entwickler

    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.


 

56
Online

1.6k
Benutzer

1.4k
Themen

8.1k
Beiträge