ERROR 500 - PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE

  • Hallo zusammen,


    ich habe eine Joomla-4 Seite, die wurde von einer Joomla-3-Seite migriert.
    Nun habe ich nach mehreren Wochen festgestellt, die Weiterleitungskomponente funktioniert nicht richtig, es gibt immer den folgenden Fehler:
    ERROR 500 - PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE


    Ein Debug zeigt folgendes: ERROR 500 - PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE in ...plugins/system/redirect/redirect.php:261 Call stack # Function Location 1 () JROOT/plugins/system/redirect/redirect.php:261 2 PlgSystemRedirect->handleError() JROOT/libraries/vendor/joomla/event/src/Dispatcher.php:486 3 Joomla\Event\Dispatcher->dispatch() JROOT/libraries/src/Application/EventAware.php:107 4 Joomla\CMS\Application\WebApplication->triggerEvent() JROOT/libraries/src/Application/CMSApplication.php:321 5 Joomla\CMS\Application\CMSApplication->execute() JROOT/includes/app.php:61 6 require_once() JROOT/index.php:32 Vorheriger Fehler Field 'new_url' doesn't have a default value .../libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php:433 Call stack # Function Location 1 () JROOT/libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php:433 2 mysqli_stmt->execute() JROOT/libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php:433 3 Joomla\Database\Mysqli\MysqliStatement->execute() JROOT/libraries/vendor/joomla/database/src/DatabaseDriver.php:675 4 Joomla\Database\DatabaseDriver->execute() JROOT/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:776 5 Joomla\Database\Mysqli\MysqliDriver->insertObject() JROOT/plugins/system/redirect/redirect.php:259 6 PlgSystemRedirect->handleError() JROOT/libraries/vendor/joomla/event/src/Dispatcher.php:486 7 Joomla\Event\Dispatcher->dispatch() JROOT/libraries/src/Application/EventAware.php:107 8 Joomla\CMS\Application\WebApplication->triggerEvent() JROOT/libraries/src/Application/CMSApplication.php:321 9 Joomla\CMS\Application\CMSApplication->execute() JROOT/includes/app.php:61 10 require_once() JROOT/index.php:32


    Ich hab leider keine Idee, wie weiter vorgehen...

    Joomla 4.2.5

    php 8.1.13

    MySQLi 10.4.27-MariaDB
    Domain: bsvkalkar.de


    Mit freundlichen Grüßen,

    Michael

  • Hat nur indirekt mit diesem Thread zu tun.

    Ein Nebenfund, den ich gerade eingereicht habe, weil PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE in der Fehlermeldung nicht übersetzt wird.


    [4.2] PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE not translated · Issue #39389 · joomla/joomla-cms
    This find came up in a thread in German forum about another issue with plg_system_redirect. Steps to reproduce not-translated issue Activate plugin…
    github.com

  • Forensuche zu dem Thema, finde ich leider nichts.

    Ok, php 8.0.26 hat nicht geholfen,

    Datenbanken sind ok, keine Reparatur durchgeführt

    Joomla-Core-Dateien neu eingespielt, keine Änderung.

    Es muss ein Problem mit der Datenbank sein?

  • php 7.4 ist keine Option, da kann ich leider nicht mehr hin zurück.

    EPB wurde deinstalliert, upup.min.js wurde auch entfernt.

    Es bleibt dabei, das Umleitungsplugin erzeugt den Fehler, es wird keine URL aufgezeichnet.


    Übrigens mit dem plugin "AdvancedRedirect" funktioniert die Umleitung, auch die URL wird aufgezeichnet.

  • Ich hab natürlich "Reparieren" ausgeführt, es hat sich aber nix geändert, alles wird grün angezeigt.


    Nein, ich habe momentan nur das Advanced-Redirect-Plugin aktiv, das war auch eigentlich nur zum probieren gedacht und es läuft.

  • Wenn du dich traust füge in Datei plugins\system\redirect\redirect.php in die leere Zeile 263 diese Zeile hinzu:

    Code
    echo $e->getMessage();

    Der Block (es gibt ähnliche. Deshalb aufpassen!) sieht dann hinterher so aus:

    Code
                    try {
                        $this->db->insertObject('#__redirect_links', $data, 'id');
                    } catch (Exception $e) {
                        $event->setError(new Exception(Text::_('PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE'), 500, $e));
    echo $e->getMessage();
                        return;
                    }

    Dann rufst im Frontend noch mal eine falsche URL auf, die zuvor noch nicht gesammelt wurde.


    Und du siehst so was in der Art auf der Fehlerseite


    Natürlich was anderes, weil ich halt einen anderen DB-Fehler provoziert habe.

  • Ok, hab ich gemacht,


    Ergibt aber folgendes Ergebnis:

    PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE, sonst nix.


    Ich hab auch die error.php vom template noch umbenannt, es ist jetzt die Joomla-Ausgabe aktiv.


    Zur Sicherheit, hier ist der modifizierte Code:

    Code
                    try {
                        $this->db->insertObject('#__redirect_links', $data, 'id');
                    } catch (Exception $e) {
                        $event->setError(new Exception(Text::_('PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE'), 500, $e));
            echo $e->getMessage();
                        return;
                    }
                }
            } else {

    Auch das Überschreiben der redirect.php mit einer Version aus dem aktuellen Joomlapaket 4.2.5 hat nicht geholfen.


    Folgender Stand jetzt:

    Die modifizierte Datei ist noch drin, "URL sammeln" ist aktiv.

    error.php ist vom Template.

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von pickbaer mit diesem Beitrag zusammengefügt.

  • Es ist schon ein Fehler bzgl. der Datenbank. Und, wenn anderstwo speichern geht, wohl diese einzelne Tabelle.


    Geh doch mal in phpMyAdmin und exportiere nur die Struktur der Tabelle.





    Reiner Verdacht, dass die ID kein AUTO_INCREMENT hat.


    Vielleicht auch in der Konfiguration mal die DB-Einstellung Typ prüfen.

  • bitte schön, Typ der DB ist MYSQLi

  • Aaah, wer genau in #1 im wUST nachschaut, sieht:

    Zitat

    Vorheriger Fehler

    Field 'new_url' doesn't have a default value

    .../libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php:433

    Nächstes mal weiß ich das dann ;)


    Und mit #14, wo steht

    Code
    `new_url` varchar(2048) NOT NULL,

    statt richtig:

    Code
    `new_url` varchar(2048) DEFAULT NULL,

    musst also folgendes machen:





    und speichern.


    Hinterher sieht es dann also so aus: