Fehlerbehebung
Joomla 1.0 und 1.5 mit MySQL 8, Fehler mit dem reservierten Wort „groups“
Joomla 1.0 und 1.5 erhalten seit vielen Jahren keine Sicherheitsupdates mehr. Diese Korrektur dient dazu, ein altes Projekt am Laufen zu halten, während Sie seine Migration auf eine aktuelle Version vorbereiten, nicht als endgültige Lösung.
Die Probleme eines alten Joomla kommen meist aus zwei Richtungen. Die erste ist PHP; das lösen Sie, indem Sie in cPanel die PHP-Version wählen, die die Website braucht. Die zweite ist MySQL: Joomla 1.0 und 1.5 funktionieren gut mit MySQL 5.7, scheitern aber an MySQL 8.
Warum es mit MySQL 8 fehlschlägt
MySQL 8 hat neue reservierte Wörter eingeführt, Wörter, die in einer SQL-Abfrage nicht als Spaltenname oder Alias verwendet werden können, wenn sie nicht in Backticks (`) stehen.
In Joomla ist das Problem das Wort groups, das früher erlaubt war und in MySQL 8 reserviert ist. Es kommt in Abfragen dieser Dateien vor:
components/com_content/models/section.php components/com_content/models/article.php components/com_content/models/frontpage.php components/com_content/models/category.php
Die betroffenen Abfragen enthalten AS groups, zum Beispiel:
...u.usertype, cc.title AS category, g.name AS groups...
Lösung: „groups“ mit Backticks maskieren
Erstellen Sie vorher eine Kopie des Ordners components/com_content (komprimieren Sie ihn zum Beispiel im Dateimanager von cPanel).
Öffnen Sie jede der oben genannten Dateien und setzen Sie groups bei allen Treffern in Backticks:
...u.usertype, cc.title AS category, g.name AS `groups`...
Speichern Sie und wiederholen Sie das in allen Dateien. Damit funktioniert Joomla mit MySQL 8.
Im Terminal erledigen
Wenn Sie Zugang zum Terminal von cPanel oder per SSH haben, wechseln Sie in den Joomla-Ordner und suchen Sie alle Dateien mit Treffern:
find . -name "*.php" -type f -print0 | xargs -0 grep -l 'AS groups'
Und korrigieren Sie alle auf einmal:
find . -name "*.php" -type f -exec sed -i 's/g\.name AS groups/g.name AS `groups`/g' {} \;
Starten Sie die Suche erneut: Wenn noch eine Datei erscheint, verwendet sie das Wort mit einem anderen Alias als g.name. Öffnen Sie sie und korrigieren Sie sie von Hand wie oben.
Prüfen, ob es funktioniert
Öffnen Sie die Startseite, eine Sektion, eine Kategorie und einen Beitrag. Wenn weiterhin ein SQL-Fehler erscheint, kopieren Sie die vollständige Meldung: Wenn sie bei near '...' ein anderes Wort nennt, suchen Sie es in der Liste der reservierten Wörter von MySQL 8 und maskieren Sie es auf dieselbe Weise. Wenn der Fehler eine andere Erweiterung nennt (zum Beispiel eine Komponente eines Drittanbieters), gehört die Korrektur in deren Dateien, in components/ oder modules/.
Das könnte Ihnen auch helfen
- PrestaShop: „An exception occurred while establishing a connection to figure out your platform version“ Lösung für den Fehler SQLSTATE[HY000] [2026] SSL_CTX_set_default_verify_paths failed beim Installier...
- Beschädigte Tabellen in einer MySQL-Datenbank Bestätigen Sie Fehler und Speicher-Engine einer Tabelle, bevor Sie sie reparieren, behalten Sie ein...
- Warum cPanel und phpMyAdmin unterschiedliche Größen für eine Datenbank anzeigen Erklärt, warum cPanel und phpMyAdmin unterschiedliche Größen berechnen, wie Sie große Tabellen finde...
- Einige Datenbanken erscheinen nicht in phpMyAdmin Prüfen Sie, ob die Datenbank zum Konto gehört, und fordern Sie eine Prüfung der Berechtigungen oder...
Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.