Typische Magento Fehler und ihre Lösungen

Magento Fehler

Im Täglichen Umgang mit Magento und insbesondere bei Updates oder Serverwechseln stößt man immer wieder auf altbekannte Fehlermeldungen. Hier die Problemkinder und ihre Lösungen.

Undefined index: 0

magento Notice: Undefined index: 0  in /app/code/core/Mage/Core/Model/Mysql4/Config.php on line 92

Bei der Installation legt Magento die IDs von Website und Store in der Datenbank fest.
Bei einem Serverwechsel oder einem Wechsel der Datenbank, gehen die IDs für das Backend (admin) verloren, bzw. werden auf 2 gesetzt.
Um dieses Problem zu lösen, gehen Sie einfach in der Datenbank in die Tabellen core_store und core_website und geben der admin site die ID 0.

——————————————

foreign_key_constraint errors (Fehler bei Fremdschlüsseln)

Bei Updates oder Serverwechseln treten häufig Fehler bei den Fremdschlüsseln in der DB auf. Um dies zu vermeiden, sollte man die Checks der Fremdschlüssel deaktivieren:

disable foreign key check

SET FOREIGN_KEY_CHECKS=0;
 // Hier kommt der restliche SQL-Code
 SET FOREIGN_KEY_CHECKS=1;

——————————————

Base table or view already exists

“Error in file: “/var/magento14/app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-0.7.73-1.4.0.0.0.php” – SQLSTATE[42S01]: Base table or view already exists: 1050 Table ‘catalog_eav_attribute’ already exists
Base table or view already exists: 1050 Table already exists – Upgrade 1.3.2.4 to 1.4.0.1 failed

Falls Sie Fehlermeldungen dieser Art erhalten, ersetzen Sie  in diesen Dateien alle Instanzen von ‘CREATE TABLE’ mit ‘CREATE TABLE IF NOT EXISTS’.
Sie können die Dateien manuell bearbeiten, oder automatisiert per Konsole:

perl -pi -w -e 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g;' /app/code/core/Mage/Catalog/sql/catalog_setup/*.php

weitere bekannte Dateien mit dem selben Syndrom:
‘mysql4-upgrade-0.8.18-0.8.19.php’
‘mysql4-upgrade-0.8.19-0.8.20.php’

app/code/core/Mage/Cms/sql/cms_setup/mysql4-upgrade-0.7.11-0.7.12.php”

——————————————

Integrity constraint violation: 1062 Duplicate entry ‚1‘ for key 1

Erst mal den Cache löschen. Falls das nichts hilft, dann versuchen Sie es mit phpmyAdmin:

 TRUNCATE `sales_flat_quote`;
 ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
 TRUNCATE `sales_flat_quote_address`;
 ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
 TRUNCATE `sales_flat_quote_address_item`;
 ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
 TRUNCATE `sales_flat_quote_item`;
 ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
 TRUNCATE `sales_flat_quote_item_option`;
 ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
 TRUNCATE `sales_flat_quote_payment`;
 ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
TRUNCATE `log_customer`;
 ALTER TABLE `log_customer` AUTO_INCREMENT=1;
 TRUNCATE `log_quote`;
 ALTER TABLE `log_quote` AUTO_INCREMENT=1;
 TRUNCATE `log_summary`;
 ALTER TABLE `log_summary` AUTO_INCREMENT=1;
 TRUNCATE `log_summary_type`;
 ALTER TABLE `log_summary_type` AUTO_INCREMENT=1;
 TRUNCATE `log_url`;
 ALTER TABLE `log_url` AUTO_INCREMENT=1;
 TRUNCATE `log_url_info`;
 ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
 TRUNCATE `log_visitor`;
 ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
 TRUNCATE `log_visitor_info`;
 ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
 TRUNCATE `report_event`;
 ALTER TABLE `report_event` AUTO_INCREMENT=1;

———————————————————————-

PEAR Cache löschen

Falls Sie das System von einem lokalen Server zu einem Webhoster übertragen haben, bzw. überhaupt einmal den Server gewechselt haben, kann es sein, dass der alte Dateipfad noch immer in der PEAR Lib gespeichert ist.
Um dieses Problem zu lösen, löschen Sie bitte den PEAR Cache:
einfach alle Dateien im Ordner Downloader/pearlib/cache löschen.

———————————————————————-

500 Internal Server Error

Sie bekommen nach dem Upgrade folgende Meldung: “500 Internal Server Error” und können nicht mehr auf Ihren Shop zugreifen?
Das liegt daran, dass der Magento Downloader beim Upgrade alle Dateirechte auf “schreibbar” gesetzt hat.
Setzen Sie am besten alle Ordner wieder auf die Rechte 755 und alle Dateien auf 644, außer so Sachen wie “Media” etc. müssen schreibbar bleiben.

———————————————————————-

Layout / Design / Theme funktioniert nicht mehr richtig

Es kann sein dass die Layout-Struktur beim Update geändert wurde.
Das Magento Team lässt sich da hin und wieder so nette Späße einfallen.
Eventuell müssen Sie individuelle CMS Layouts wieder neu anlegen.
Deshalb das Backup!
Die Layouts werden hier registriert:

/app/code/core/Mage/Page/etc/config.xml

———————————————————————-

Wartungsmodus manuell abschalten

Nach einem Upgrade von Magento kann es passieren, dass man im Wartungsmodus hängen bleibt.
Dieses Problem kann man ganz einfach lösen, indem man die Datei  “maintenance.flag” im Magento Root Verzeichnis löscht.
Und schon ist man wieder online!

———————————————————————-

General error: 1005 Can’t create table

Error in file: „app/code/core/Mage/Customer/sql/customer_setup/mysql4-upgrade-1.4.0.0.7-1.4.0.0.8.php“ – SQLSTATE[HY000]: General error: 1005 Can’t create table ‚customer_form_attribute‘ (errno: 150)
SQLSTATE[HY000]: General error: 1005 Can’t create table

Wenn Sie diesen Fehler bei der Installation bekommen, verzweifeln Sie nicht. Es sind mal wieder die Fremdschlüssel in der DB.
Begeben Sie sich in Ihr Datenbank-Administrationstool, phpMyAdmin oder was auch immer und führen Sie diesen SQL-Code aus:

 ALTER TABLE `admin_assert` ENGINE=InnoDB;

Das machen Sie nun mit allen Tabellen ;-).
Da es in Magento ziemlich viele Tabellen gibt, kann das eine recht nervige Aufgabe werden.
Schneller geht es, wenn man ein kleines Skript dafür benutzt, wie z.B. dieses:

MySQL Datenbank Engine konvertieren

ähnliche Fehler:
Error in file: /app/code/core/Mage/SalesRule/sql/salesrule_setup/mysql4-upgrade-1.4.0.0.0-1.4.0.0.1.php“ – SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`DATENBANKNAME`.`salesrule_coupon_usage`, CONSTRAINT `FK_SALESRULE_COUPON_CUSTOMER_CUSTOMER_ID_CUSTOMER_ENTITY` FOREIGN KEY (`customer_id`) REFERENCES `customer_entity` (`entity_id`) ON DELE)

———————————————————————-

Backup der Datenbank mit phpMyAdmin

Nochmal zur Erinnerung: Beim Export der Datenbank diese Modifikationen vornehmen, bevor man sie wieder importiert:

— Das hier vor der ersten Zeile in den Dump einfügen:

SET FOREIGN_KEY_CHECKS = 0;

— Das hier nach der letzten Zeile in den Dump einfügen:

SET FOREIGN_KEY_CHECKS = 1;

und dann noch in  app/etc/config.xml:

SET NAMES utf8 zu SET NAMES utf8; SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0; ändern.

———————————————————————-

Weiße Seite nach Serverwechsel oder Upgrade

Wenn Sie nach einem Serverwechel oder Upgrade eine weiße Seite erhalten, schalten Sie am besten in der index.php die Fehlermeldungen ein:

 ini_set('display_errors', 1);

———————————————————————-

Falsche PHP-Version

Fatal error: Method Varien_Object::__tostring() cannot take arguments in /magento/lib/Varien/Object.php

Falls Sie diesen Fehler sehen, bedeutet das, dass Ihre Magento Version nicht unter PHP 5.3 funktioniert.
Dieses Problem lässt sich folgendermaßen lösen:

In der Datei: /lib/Varien/Object.php (Zeile 484)
ändern Sie

public function ___toString(array $arrAttributes = array(), $valueSeparator=’,')

zu

public function __invoke(array $arrAttributes = array(), $valueSeparator=’,')

In der Datei /app/code/core/Mage/Core/Controller/Request/Http.php (Zeile 274)
ändern Sie

$host = split(‘:’, $_SERVER['HTTP_HOST']);

zu

$host = explode(‘:’, $_SERVER['HTTP_HOST']);