Liste der Anhänge anzeigen (Anzahl: 1)
Vorsicht mit Contao CMS UPDATE auf 3.5.16 ...
Hallo liebe Contao-Community,
soeben habe ich mal einige Webseiten von Contao CMS 3.5.15 auf 3.5.16 mittels der dem LIVE UPDATE aktualisiert
und konnte danach auf einigen Seiten folgende Fehlermeldung sehen:
Fatal error: Uncaught exception Exception with message Query error: Duplicate entry '2fd4ca6f5d3c3bc54fe9ffe76ff43262-2' for key 'checksum_pid'
(INSERT INTO tl_search (tstamp, url, title, protected, filesize, groups, pid, language, text, checksum) VALUES (1473164677,
)) thrown in system/modules/core/library/Contao/Database/Statement.php on line 295
#0 system/modules/core/library/Contao/Database/Statement.php(264): Contao\Database\Statement->query()
#1 system/modules/core/library/Contao/Search.php(214): Contao\Database\Statement->execute()
#2 system/modules/core/classes/FrontendTemplate.php(330): Contao\Search::indexPage(Array)
#3 system/modules/core/classes/FrontendTemplate.php(124): Contao\FrontendTemplate->addToSearchIndex()
#4 system/modules/core/pages/PageRegular.php(190): Contao\FrontendTemplate->output(true)
#5 system/modules/core/controllers/FrontendIndex.php(285): Contao\PageRegular->generate(Object(Contao\PageModel), true)
#6 index.php(20): Contao\FrontendIndex->run()
#7 {main}
Nachdem ich dann in der SYSTEMWARTUNG alle Daten bereinigt hatte, ging dann alles wieder.
Allerdings wenn man dann den "Suchindex neu aufbaut" erscheint dieser Fehler erneut.
Weiss da jemand was da zu tun wäre? (ach, ja die Datenbank ist korrekt aktualisiert worden)
Anhang 18240
Viele Grüße
- Nico -
Duplicate entry in tl_search Workaround Fix
Gemeldet: https://github.com/contao/core/issues/8460
Wer mutig ist, mal ein Workaround Fix:
In der Datei system/modules/core/library/Contao/Search.ph Zeile 212
das
PHP-Code:
$objInsertStmt = $objDatabase->prepare("INSERT INTO tl_search %s")
durch das ersetzen
PHP-Code:
$objInsertStmt = $objDatabase->prepare("INSERT IGNORE INTO tl_search %s")
Vorher Backup machen von der Datei zur Sicherheit.
Workaround Search.php funktionierte nur für einige Zeit
Zitat:
Zitat von
BugBuster
Gemeldet:
https://github.com/contao/core/issues/8460
Wer mutig ist, mal ein Workaround Fix:
In der Datei system/modules/core/library/Contao/Search.ph Zeile 212
das
PHP-Code:
$objInsertStmt = $objDatabase->prepare("INSERT INTO tl_search %s")
durch das ersetzen
PHP-Code:
$objInsertStmt = $objDatabase->prepare("INSERT IGNORE INTO tl_search %s")
Vorher Backup machen von der Datei zur Sicherheit.
Hallo BugBuster,
den von Dir vorgeschlagenen Workaround habe ich eingebaut. Funktionierte zunächst, nach einigem Testen (unter durch Weiterleitungen und 404-Seiten) gab es dann wieder die Exception, hervorgerufen durch Duplicate Entry in tl_search
Code:
Query error: Duplicate entry '41ec1e87d078bfde694784f2f8819d76-2' for key 'checksum_pid' (UPDATE tl_search SET tstamp=1473368104, url='http://gc3.mai-internet.de/home.html', title='Home', protected='', filesize='120.96', groups=0, pid='2', language='de', text='', checksum='41ec1e87d078bfde694784f2f8819d76' WHERE id='1')'
Beim Update kann es also ebenso schiefgehen. Daher sollte man in der Search.php ebenso in Zeile 204 ein IGNORE einsetzen:
PHP-Code:
$objDatabase->prepare("UPDATE IGNORE tl_search %s WHERE id=?")
->set($arrSet)
->execute($objIndex->id);
(ungetestet!)
Liste der Anhänge anzeigen (Anzahl: 1)
Search.php aus 3.5.17 - zum testen
Hi,
anbei mal die aktuelle Version zum Test für Euch.
Darin sind die mittlerweile beiden Patche von Leo, nicht meine.
Soll damit laufen.
Entpacken und damit die Datei system/modules/core/library/Contao/Search.php ersetzen.
Vorher Backup vom Original nicht vergessen.