#1 2020-06-22 08:27:40

dadoc
Mitglied
2020-06-22
1

Vorstellung und erste Frage zu myisam vs. innodb

Guten Morgen,
mein erster Post hier, ich bin CR einer großen, deutschen Fotozeitschrift und gerade dabei, Themen zum Bereich Bildverwaltung (offlline & online) zu recherchieren. Dabei teste ich auch gerade Piwigo, das ich dann aber auch gern privat nutzen möchte ;) Ich bin beeindruckt, wie sich das Projekt seit meinem letzten "Besuch" vor ein paar Jahren entwickelt hat - Hut ab!
Was mir bei der Installation aufgefallen ist: Offensichtlich setzt Piwigo immer noch auf MyISAM, zumindest bekomme ich mit InnoDB wegen der fehlenden FULLTEXT Indices Fehler bei der Suche (dieselben wie in [URL = https://piwigo.org/forum/viewtopic.php?id=27685] diesem Post[/url] beschrieben):

Code:

Warning:  [mysql error 1191] Can't find FULLTEXT index matching the column list

SELECT
    *
  FROM piwigo_categories
    INNER JOIN piwigo_user_cache_categories ON id = cat_id and user_id = 1
  WHERE (MATCH(name, comment) AGAINST( 'martin' IN BOOLEAN MODE)) in /homepages/17/d829450095/htdocs/piwigo/include/dblayer/functions_mysqli.inc.php on line 856


Fatal error: Uncaught Error: Call to a member function fetch_assoc() on bool in /homepages/###/htdocs/piwigo/include/dblayer/functions_mysqli.inc.php:220 Stack trace: #0 /homepages/###/htdocs/piwigo/include/functions_search.inc.php(1143): pwg_db_fetch_assoc(false) #1 /homepages/###/htdocs/piwigo/include/functions_search.inc.php(1384): qsearch_get_categories(Object(QExpression), Object(QResults)) #2 /homepages/###/htdocs/piwigo/include/functions_search.inc.php(1301): get_quick_search_results_no_cache('martin', Array) #3 /homepages/###/htdocs/piwigo/include/functions_search.inc.php(1474): get_quick_search_results('martin', Array) #4 /homepages/###/htdocs/piwigo/include/section_init.inc.php(350): get_search_results('11', NULL) #5 /homepages/###/htdocs/piwigo/index.php(12): include('/homepages/###') #6 {main} thrown in /homepages/###/htdocs/piwigo/include/dblayer/functions_mysqli.inc.php on line 220

und zwar bei jedem Suchwort mit mehr als drei Zeichen. Suchen mit Suchwörtern zwischen 1 und 3 Zeichen werfen zwar keinen Fehler, bringen aber auch keine Ergebnisse.

Stelle ich die db auf myISAM um, verschwindet der Fehler.
Das Problem ist nun, dass die großen Hoster hierzulande myISAM nicht mehr unterstützen bzw. erlauben. Bei Strato etwa  vom Start weg nicht; bei IONOS kann man zwar die InnoDB-Tabellen auf myISAM umstellen, aber die lassen jede Nacht ein Script laufen, das sie wieder auf InnoDB zurücksetzt (hat mir einiges Kopfzerbrechen bereitet, das dieser Umstand zunächst auch dem IONOS-Support nicht bekannt war...).
Ich habe jetzt zwar mal versuchsweise für piwigo_tags manuell einen FULLTEXT Index angelegt, worauf dann nicht mehr piwigo_tags in der Fehlermeldung bei der quick Search bemängelt wurde, sondern das oben gepostete. Gibt es eine auch für Laien nachvollziehbare Lösung, um Piwigo so zu installieren, dass die Suche auch mit InnoDB funktioniert?
Vielen Dank & viele Grüße
Martin

Offline

#2 2020-11-05 09:57:29

4media
Mitglied
2016-05-18
7

Re: Vorstellung und erste Frage zu myisam vs. innodb

Hallo Leute.

Diese Lösung, würde mich auch interessieren!

Hat jemand eine Idee?

Offline

#3 2020-11-05 13:36:52

drlecter
Piwigo Team Moderators
2016-03-17
1118

Re: Vorstellung und erste Frage zu myisam vs. innodb

Welche DB Version setzt du denn ein?

Offline

#4 2020-11-06 11:00:03

4media
Mitglied
2016-05-18
7

Re: Vorstellung und erste Frage zu myisam vs. innodb

Eine aktuelle MariaDB auf Debian Buster kommt zum Einsatz.

Ich habe das Problem folgendermaßen gelöst.
1. Piwigo hat nach wie vor stellenweise ein Problem mit dem Tabellentyp InnoDB, was ich voreingestellt habe:
Deshalb müssen die Tabellen
    piwigo_tags
    piwigo_images
    piwigo_categories
auf den Typ "MyISAM" umgestellt werden.

Code:

ALTER TABLE piwigo_tags ENGINE=MyISAM;
ALTER TABLE piwigo_images ENGINE=MyISAM;
ALTER TABLE piwigo_categories ENGINE=MyISAM;

Zusätzlich muss entweder die Collation aller Tabellen auf utf8_general_ci oder z. B. utf8_bin eingestellt werden. Oder wenn man z. B. mit dem neueren utf8mb4_general_ci arbeiten möchte, dann tritt in der Tabelle piwigo_tags ein Problem mit der Länge des Datentyps auf. Deshalb habe ich in Tabelle
piwigo_tags das Feld url_name mit Datentyp varchar(255)
von Collation utf8mb4_general_ci auf utf8_bin umgestellt.

Dann funktioniert alles. Wenn weitere Fehler auftreten, müssen u. u. eben noch weitere Tabellen und Felder umgestellt werden.

Allerdings ist es unverständlich, warum Piwigo nicht mit beiden Collations umgehen kann. Das sind schon sehr grundsätzliche Schwächen, die das Leben vollkommen unnötig schwer machen. MyISAM ist eben nicht mehr überall und bei jedem Provider nutzbar. Ich tue mich leicht mit dem eigenen Rootserver.

Offline

#5 2020-11-06 11:21:49

4media
Mitglied
2016-05-18
7

Re: Vorstellung und erste Frage zu myisam vs. innodb

Versionen:
Piwigo 2.10.2
mysql  Ver 15.1 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

In meinem Firefox ohne irgendwelchen Blockern, kann ich keinen Beitrag editieren. Deshalb nochmal ein Post. Auch bei neuen Posts bekomme ich einen Fehler, aber es speichert.

Offline

#6 2020-11-06 16:05:57

drlecter
Piwigo Team Moderators
2016-03-17
1118

Re: Vorstellung und erste Frage zu myisam vs. innodb

Ja das Forum hat nach dem speichern eines neuen Post oft eine Fehlermeldung.
Der Grund damals was ja (wie es im Github Item steht) primär die Perfomance und die Suche für myisam. Inzwischen kann innodb ja auch (seit mysql 5.6) auch die Suche. Da könnte hoffentlich bald mal ein Update kommen.
Bzgl. Collation muss man einmal wohl in den Code schauen, wobei ich das Problem hier eher als sekundär ansehe. Das sollte beim anlegen einer DB generell kein Problem sein.

Offline

#7 2021-05-29 22:08:07

jonnylander
Mitglied
2021-05-29
4

Re: Vorstellung und erste Frage zu myisam vs. innodb

Ich bin über die Suchfunktion des Forums hier gelandet... und verstehe leider nichts von dem, was ihr hier schreibt. Habe mein piwigo bei IONOS gehostet und bekomme den gleichen Fehler wie oben beschrieben.

Was muss ich tun, damit meine Suche funktioniert?

Offline

#8 2021-05-30 00:09:09

drlecter
Piwigo Team Moderators
2016-03-17
1118

Re: Vorstellung und erste Frage zu myisam vs. innodb

Du musst mit einem Tool wie phpmyadmin oder adminer oder direkt an der Konsole die Befehle ausführen wie die 4media gepostet hat.
Es gibt halt 2 verschiedene Versionen wie Mysql die Datenbank verwalten kann.

Offline

#9 2021-07-13 00:20:23

kleiner_Hobbit
Mitglied
Berlin
2017-08-13
32

Re: Vorstellung und erste Frage zu myisam vs. innodb

Ich hatte die selben Fehlermeldungen.
Mit phpMyAdmin habe ich für einige Datenbankfelder einen Fulltext-Index erstellt und die Fehlermeldungen erscheinen nun nicht mehr:

create fulltext index piwigo_tags_idx on piwigo_tags(name);
create fulltext index piwigo_categories_idx on piwigo_categories(name,comment);
create fulltext index piwigo_images_idx on piwigo_images(name,comment);

Offline

Brett Fußzeile

Unterstützt von FluxBB

github twitter newsletter Spenden Piwigo.org © 2002-2024 · Kontakt