Erhält man beim Versuch, den Cache für die Artikeleigenschaften neu zu erzeugen (und damit die Tabelle "products_properties_index" aufzufrischen), die Fehlermeldung
USER ERROR(256): "rebuild_properties_index: typeof($p_products_id) != integer" in \system\classes\properties\PropertiesDataAgent.inc.php:23
lohnt sich ein Blick in die Datei
\system\classes\properties\PropertiesDataAgent.inc.php
in der der Error ausgelöst wird. Hier wird ersichtlich, dass eine Fehlermeldung ausgelöst wird, wenn die Produkt-ID leer ist (Übergabeparameter $p_products_id). Wie kann das passieren?
Gibt es leere Produkt-Ids? Im Grunde nicht, zumindest nicht in der Tabelle "products", insbesondere, da die Produkt-ID (Spalte "products_id") hier der Primärschlüssel. Somit gehen wir noch einen Schritt zurück und schauen uns die Klasse "CacheControl" an, die in
\system\core\caching\CacheControl.inc.php
definiert wird. In der Funktion rebuild_products_properties_index wird hier hiernach noch eine andere Tabelle als Indizierungsbasis herangezogen: Die Tabelle "products_properties_combis". Hier kann es tatsächlich leere Einträge für die Spalte "products_id" geben, so wie es bei uns der Fall war. Leer ist hierbei nicht ganz richtig - die Spalte "products_id" hatte den Wert "0", was jedoch mit der PHP-Funktion "empty()" als "FALSE" gewertet wurde und somit den Fehler auslöste (empty(): "Gibt FALSE zurück, wenn var existiert und einen nicht-leeren, von 0 verschiedenen Wert hat. Andernfalls wird TRUE zurück gegeben.").