Maximale Anzahl von Einträgen des Multiselects erhöhen

Magento speichert die Werte eines Multiselect-Feldes kommasepariert in der Entität catalog_product_entity_varchar. Das ist eigentlich kein Problem außer man benötigt mehr als 40 aktive Einträge. Dann eröffnet sich schnell das Problem das die Länge des Varchars mit 255 Zeichen nicht genug Platz bietet um alle Einträge aufzunehmen. Wenn ein Eintrag aus einer vierstelligen ID besteht und das Komma zur Auswahl noch benötigt wird sind das immerhin schon 6 Zeichen pro aktivierten Eintrag. 255 / 6 = 42 Einträge maximal.

Dafür gibt es nun zwei Patches. Auf der einen Seite kann man anstelle des Backend_Type varchar einfach Text verwenden. Damit können (quasi) beliebig viele Einträge gespeichert werden. Leider macht der Indexer der Layered-Navigation dort ein paar Probleme. Dazu habe ich aber gerade einen Patch geschrieben.

Auf der anderen Seite kann, wie Jan mit gerade nebenbei sagte, ab MySQL 5 die Anzahl der Einträge des Varchars, abhängig von der Max-Row-Length, auf bis zu 65.000 Zeichen erhöht werden. Das geht z.B. mit folgendem SQL:

ALTER TABLE `catalog_product_entity_varchar` CHANGE `value` `value` VARCHAR( 21000 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''

Bleibt die Frage welche der Herangehensweisen die bessere ist. Aber das überlasse ich euch selbst :)



Ein Beitrag von Tobias Vogt
Tobias's avatar

Tobias Vogt arbeitet seit 2008 mit Magento und ist seit 2011 durch Magento zertifizierter Entwickler. Seit 2016 ist er Mitgründer und CTO bei der connect-io GmbH, einer Magento-Agentur mit Sitz im idyllischen Paderborn-Salzkotten. Er gehört zum Gründer-Team der Webguys und ist seit November 2011 Bachelor of Science (Wirtschaftsinformatik). Sie erreichen Ihn per E-Mail unter tobi@webguys.de.

Alle Beiträge von Tobias

Dein Kommentar