Ups! Ein Fehler ist aufgetreten!

Hallo 

wir verwenden Shopware 5.2.21

Im Frontend erhalte ich folgende fehlermeldung nachdem ich den Cache geleert habe und im Frontend auf eine Kategorie klicke.

Was könnte die fehlermeldug auslösen?

Kann mir jemand weiterhelfen?

 

Ups! Ein Fehler ist aufgetreten!

Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.

An exception occurred while executing 'INSERT IGNORE INTO s_search_index (keywordID, elementID, fieldID) SELECT sk.id as keywordID, 29919 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (‘001091010’) UNION ALL SELECT sk.id as keywordID, 29920 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (‘001091250’) UNION ALL SELECT sk.id as keywordID, 29921 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (‘001092000’) UNION ALL SELECT sk.id as keywordID, 29922 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (‘001093000’) UNION ALL SELECT sk.id as keywordID, 29923 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (‘001093220’) UNION ALL SELECT sk.id as keywordID, 29924 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (‘001093490’) UNION ALL SELECT sk.id as keywordID, 29925 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (‘001094000’) UNION ALL SELECT sk.id as keywordID, 29926 as elementID, 5 as fieldID… 

 

Stack trace:

#0 vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(996): Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Object(Doctrine\DBAL\Driver\PDOMySql\Driver), Object(PDOException), ‘INSERT IGNORE I…’, Array)
#1 engine/Shopware/Bundle/SearchBundleDBAL/SearchTerm/SearchIndexer.php(203): Doctrine\DBAL\Connection->executeUpdate(‘INSERT IGNORE I…’)
#2 engine/Shopware/Bundle/SearchBundleDBAL/SearchTerm/SearchIndexer.php(96): Shopware\Bundle\SearchBundleDBAL\SearchTerm\SearchIndexer->build()
#3 engine/Shopware/Bundle/SearchBundleDBAL/SearchTerm/SearchTermQueryBuilder.php(84): Shopware\Bundle\SearchBundleDBAL\SearchTerm\SearchIndexer->validate()
#4 var/cache/production_201703211201/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1681): Shopware\Bundle\SearchBundleDBAL\SearchTerm\SearchTermQueryBuilder->__construct(Object(Shopware_Components_Config), Object(Doctrine\DBAL\Connection), Object(Shopware\Bundle\SearchBundleDBAL\SearchTerm\CacheKeywordFinder), Object(Shopware\Bundle\SearchBundleDBAL\SearchTerm\SearchIndexer), Object(Shopware\Bundle\SearchBundleDBAL\SearchTerm\TermHelper))
#5 vendor/symfony/dependency-injection/Container.php(314): ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer->getShopwareSearchdbal_SearchQueryBuilderDbalService()
#6 engine/Shopware/Components/DependencyInjection/Container.php(182): Symfony\Component\DependencyInjection\Container->get(‘shopware_search…’, 1)
#7 engine/Shopware/Components/DependencyInjection/Container.php(138): Shopware\Components\DependencyInjection\Container->doLoad(‘shopware_search…’, 1)…

 

Der Fehler scheint beim aufbauen des Suchindexes zu passieren. Probier dochmal genau diese SQL Abfrage in phpmyadmin reinzufeuern und guck was passiert.

Kannst du mir bitte genau sagen welche SQL Abfrage ich in phpmyadmin einfügen soll?

Die komplette Abfrage von “INSERT IGNORE INTO” bis zum letzten Hochkomma. Leider kann ich sie hier nicht sehen.

Ich würde ja auch versuchen die Abfrage bei mir mal schnell abzufeuern - auch wenn ich denke dass bei mir nicht viel passieren wird weil ich die nötigen IDs nicht habe.

Wenn wir aber wissen was genau deine Datenbank an der Abfrage nicht mochte sind wir ein Stück weiter.

Du kannst evtl. auch mal den relevanten Teil aus der Logdatei von Shopware hier posten. Evtl. steht da die ganze Abfrage und die Fehlermeldung der Datenbank.

Ich habe mal den Text in phpmyadmin eingefügt und folgende fehlermeldung erhalten.

10885 Fehler wurden während der Analyse gefunden.

 

  1. Schließendes Anführungszeichen ’ wurde erzeugt. (near „“ at position 363584)
  2. Unerwarteter Statement-Anfang. (near „‚INSERT IGNORE INTO s_search_index (keywordID, elementID, fieldID) SELECT sk.id as keywordID, 29919 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (‘“ at position 0)
  3. Unerwarteter Statement-Anfang. (near „001091010“ at position 175)
  4. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29920 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 184)
  5. Unerwarteter Statement-Anfang. (near „001091250“ at position 305)
  6. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29921 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 314)
  7. Unerwarteter Statement-Anfang. (near „001092000“ at position 435)
  8. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29922 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 444)
  9. Unerwarteter Statement-Anfang. (near „001093000“ at position 565)
  10. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29923 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 574)
  11. Unerwarteter Statement-Anfang. (near „001093220“ at position 695)
  12. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29924 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 704)
  13. Unerwarteter Statement-Anfang. (near „001093490“ at position 825)
  14. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29925 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 834)
  15. Unerwarteter Statement-Anfang. (near „001094000“ at position 955)
  16. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29926 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 964)
  17. Unerwarteter Statement-Anfang. (near „001094020“ at position 1085)
  18. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29927 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 1094)
  19. Unerwarteter Statement-Anfang. (near „001094110“ at position 1215)
  20. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29928 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 1224)
  21. Unerwarteter Statement-Anfang. (near „001094200“ at position 1345)
  22. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29929 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 1354)
  23. Unerwarteter Statement-Anfang. (near „001094750“ at position 1475)
  24. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29930 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 1484)
  25. Unerwarteter Statement-Anfang. (near „001095090“ at position 1605)
  26. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29931 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 1614)
  27. Unerwarteter Statement-Anfang. (near „001095110“ at position 1735)
  28. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29932 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 1744)
  29. Unerwarteter Statement-Anfang. (near „001095410“ at position 1865)
  30. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29933 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 1874)
  31. Unerwarteter Statement-Anfang. (near „001096430“ at position 1995)
  32. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29136 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 2004)
  33. Unerwarteter Statement-Anfang. (near „01048600162“ at position 2125)
  34. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29151 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 2136)
  35. Unerwarteter Statement-Anfang. (near „01048600163“ at position 2257)
  36. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29166 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 2268)
  37. Unerwarteter Statement-Anfang. (near „01048600164“ at position 2389)
  38. Unerwarteter Statement-Anfang. (near „’) UNION ALL SELECT sk.id as keywordID, 29121 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN (’“ at position 2400)
  39. Unerwarteter Statement-Anfang. (near „01048600165“ at position 2521)

 

 

Da hast du irgendwas zuviel eingefügt. Welchen Text hast du denn exakt eingefügt?

 

Wie kann ich den ganzen Text mit senden ohne die fehlermeldung “Nachricht ist 394811 Zeichen zu lang” zu erhalten?

Jetzt habe ich es ohne Hochkommas eingefügt und erhalte die fehlermeldung.

 

2 Fehler wurden während der Analyse gefunden.

 

  1. Schließendes Anführungszeichen ’ wurde erzeugt. (near “” at position 363428)
  2. Unerwartetes Zeichen. (near “UNION ALL” at position 186)

 

 

MySQL meldet: 

#1436 - Thread-Stack-Überlauf: 246176 Bytes eines 262144-Byte-Stacks in Verwendung, und 16000 Bytes benötigt. Verwenden Sie 'mysqld --thread_stack=#', um einen größeren Stack anzugeben

Hallo maisfeld,

ja ich glaube damit sehen wir den Fehler.

Ändere bitte mal deine my.cnf und trage ein:

thread_stack = 591872

Kannste z.B. direkt unter dem Eintrag von ‘thread_cache_size’ machen, da hab ichs hin.

Danach Mysql kurz neu starten, und es sollte gehen.

Ob der Wert auch gestellt wurde siehst du in phpmyadmin mit folgendem Select:

SHOW VARIABLES LIKE 'thread_stack'

Den Befehl am besten mal davor ausführen, Antwort notieren, Änderungen durchführen, neu starten, wieder ausführen und Antwort notieren.

Und dann kannste nochmal deinen Query versuchen - er sollte nun gehen.

Thomas

Hallo Thomas

Unser Hoster kann diese anforderung nicht machen.

Auf unseren Shared Servern ist dies aus Gründen der Performance nicht möglich. Für „normale“ MySQL-Operationen ist der Standardwert in der Regel ausreichend.

Ich würde dir gerne die Fehlermeldungen als Textfile senden doch leider sind die zu lang, 

Ich habe diese auf unseren Server geladen und den link findest du hier.

Besten Dank

Carlo

 

Lustig, da stehts ja sogar drin in der Fehlermeldung:

Use 'mysqld --thread_stack=#' to specify a bigger stack.

Wenn euer Hoster das nicht einfügen mag dann haben wir ein Problem :slight_smile:

Man muss aber ehrlich gesagt sagen dass ein Query mit 363427 Zeichen bestehend aus 2720 Sub-Selects durchaus ein Monster ist was man einer Datenbank nicht unbedingt zumuten muss *g*

Ich schau mal ob ich herausfinden kann warum der Insert bei euch gar so groß ist …

 

Hmmm, kannst du mir mal den Inhalt der Tabellen s_search_tables und s_search_fields zeigen?

Das Problem scheint mit der fieldID5 aufzutreten. Vermutlich hast du einfach zuviele Daten - ich hab auch auf Anhieb keinen Parameter gefunden der Shopware hier etwas drosseln würde.

 

Hier mal  s_search_fields

-- phpMyAdmin SQL Dump
-- version 4.6.6
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Erstellungszeit: 12. Apr 2017 um 16:02
-- Server-Version: 5.7.17-0ubuntu0.16.04.2
-- PHP-Version: 5.6.27

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Datenbank: `schluessel-esch2`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `s_search_fields`
--

CREATE TABLE `s_search_fields` (
  `id` int(11) UNSIGNED NOT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `relevance` int(11) NOT NULL,
  `field` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `tableID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Daten für Tabelle `s_search_fields`
--

INSERT INTO `s_search_fields` (`id`, `name`, `relevance`, `field`, `tableID`) VALUES
(1, 'Kategorie-Keywords', 10, 'metakeywords', 2),
(2, 'Kategorie-Überschrift', 70, 'description', 2),
(3, 'Artikel-Name', 400, 'name', 1),
(4, 'Artikel-Keywords', 10, 'keywords', 1),
(5, 'Artikel-Bestellnummer', 50, 'ordernumber', 4),
(6, 'Hersteller-Name', 45, 'name', 3),
(7, 'Artikel-Name Übersetzung', 50, 'name', 5),
(8, 'Artikel-Keywords Übersetzung', 10, 'keywords', 5);

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `s_search_fields`
--
ALTER TABLE `s_search_fields`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `field` (`field`,`tableID`),
  ADD KEY `tableID` (`tableID`);

--
-- AUTO_INCREMENT für exportierte Tabellen
--

--
-- AUTO_INCREMENT für Tabelle `s_search_fields`
--
ALTER TABLE `s_search_fields`
  MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

und noch s_search_tables

-- phpMyAdmin SQL Dump
-- version 4.6.6
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Erstellungszeit: 12. Apr 2017 um 16:12
-- Server-Version: 5.7.17-0ubuntu0.16.04.2
-- PHP-Version: 5.6.27

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Datenbank: `schluessel-esch2`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `s_search_tables`
--

CREATE TABLE `s_search_tables` (
  `id` int(11) NOT NULL,
  `table` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `referenz_table` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `foreign_key` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `where` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Daten für Tabelle `s_search_tables`
--

INSERT INTO `s_search_tables` (`id`, `table`, `referenz_table`, `foreign_key`, `where`) VALUES
(1, 's_articles', NULL, NULL, NULL),
(2, 's_categories', 's_articles_categories', 'categoryID', NULL),
(3, 's_articles_supplier', NULL, 'supplierID', NULL),
(4, 's_articles_details', 's_articles_details', 'id', NULL),
(5, 's_articles_translations', NULL, NULL, NULL),
(6, 's_articles_attributes', NULL, NULL, NULL);

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `s_search_tables`
--
ALTER TABLE `s_search_tables`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT für exportierte Tabellen
--

--
-- AUTO_INCREMENT für Tabelle `s_search_tables`
--
ALTER TABLE `s_search_tables`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

So, ich muss jetzt „leider“ in den Osterurlaub starten und bin ab Donnerstag wieder da - ABER du könntest in den Grundeinstellungen unter der Suche mal etwas umstellen.

Dein Problemfeld ist die „Artikel-Bestellnummer“ - eventuell kannst du das unter „Relevanz / Felder“ mal zum Test rausnehmen.

Eventuell kannst du auch die minimale Suchwortlänge etwas nach oben setzen.

Ich weiß, das sind alles keine wunderschönen Lösungen, aber besser eine nicht ganz perfekte Suche als garkeine, hm?

Alternativ ziehst den Webshop (oder die Datenbank) auf nen vServer - da kannste dann den Mysql Stack höher stellen.

Sag mir wie du vorran kommst!

Thomas

 

Ich nehme an das du nächste Woche wieder erreichbar bist?

Bis dahin werde ich deine Vorschläge mal ausprobieren.

Besten Dank für deine Bemühung und wünsche dir schönen Urlaub.

Carlo

 

Hallo Carlo,

 

klar, Donnerstag bin ich wieder da. Hoffentlich helfen meine Tipps soweit!

 

Thomas

Hallo, häng mich mal dran…

Ich habe das gleiche Problem bei zwei Shops, erhalte jeden Tag emails vom Server, der genau das behauptet:

  [Doctrine\DBAL\DBALException]                                                                                                                                                            
  An exception occurred while executing 'INSERT IGNORE INTO s_search_index (keywordID, elementID, fieldID)                                                                                 
  SELECT sk.id as keywordID, 14253 as elementID, 5 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN ('30216320')                                                                   
  UNION ALL                                                                                                                                                                                
  SELECT sk.id as keywordID, 14253 as elementID, 9 as fieldID FROM s_search_keywords sk WHERE sk.keyword IN ('4008110528403')                                                              
  UNION ALL  
                                                           
  SQLSTATE[HY000]: General error: 1436 Thread stack overrun: 246176 bytes used of a 262144 byte stack, and 16000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.  
                                                                                                                                                                                         
                                                                                                                                                                                           
  [PDOException]                                                                                                                                                                           
  SQLSTATE[HY000]: General error: 1436 Thread stack overrun: 246176 bytes used of a 262144 byte stack, and 16000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.  
                                                                                                                                                                                           

sw:cron:run [-f|--force] [--] []

Egal wie hoch ich den thread stack stelle, es wird immer 16000 k mehr verlangt…?

Tommy

@ThomasChr schrieb:

Hallo Carlo,

 

klar, Donnerstag bin ich wieder da. Hoffentlich helfen meine Tipps soweit!

 

Thomas

Hallo Thomas

besten Dank für deine Tipps.
Ich habe bei der Suche die Einstellung „Artikel-Bestellnummer“ rausgenommen und die Fehlermeldungen erscheinen nicht mehr.
Da mein Hoster „Mysql Stack“ nicht ändern kann/will lass ich das mal so.
Wie du schon geschrieben hast „besser eine nicht ganz perfekte Suche als gar keine…“

Vielleicht hast du noch eine andere Lösung.

Gruss Carlo

 

Hallo Carlo,

ja, die andere Lösung wäre entweder den Programmcode deutlich umzuschreiben damit der keine solchen Monster-SQL Abfragen erzeugt, oder aber einen eigenen vServer zu mieten den man entsprechend einstellen kann :slight_smile:

Thomas

1 „Gefällt mir“

Ich habe alles eingestellt, den Stack erhöht, egal wie viel ich erhöhe, es wird immer wieder 16000 k verlangt…?

Die Abfrage in der DB angeschaut, die Änderungen wurden übernommen, aber es fehlen immer wieder 16000 K!

So langsam werde ich Rudi ratlos…

 

Tommy

Hallo Tommy,

welche Meldung bekommst du wenn du die Abfrage im phpmyadmin/mysql ausführst?

Welches Ergebnis bekommst du bei

SHOW VARIABLES LIKE 'thread_stack';

Wenn du die Variablen erhöhen konntest nehme ich an es ist ein Server unter deiner Kontrolle?

Dann sollten wir das ja relativ schnell hinbekommen!

Thomas

PS: Wenns garnicht hilft können wir ein Teamviewer Meeting machen oder du gibst mir irgendwelche Zugangsdaten und ich schau selber.