Monthly Archives: décembre 2011

Qu’est ce que ce problème de UNQ_BY_CUSTOMER lors de la migration Magento 1.6 ?

Lors des migrations des boutiques Magento vers la version 1.6, l’erreur suivante survient régulièrement :

Error in file: /app/code/core/Mage/Customer/sql/customer_setup/mysql4-upgrade-1.5.9.9-1.6.0.0.php” – SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘0-1487’ for key ‘UNQ_BY_CUSTOMER‘

Ceci est provoqué par des problèmes de contraintes d’intégrité dans la base MySQL. Pour le résoudre, il faut aller modifier le fichier app/etc/config.xml :

 <initStatements>SET NAMES utf8</initStatements>

devient :

<initStatements>SET NAMES utf8; SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;</initStatements>

Vous pouvez remettre le fichier à son état initial lorsque la migration est terminée.

Si le problème persiste, n’hésitez pas à rafraîchir la page d’accueil plusieurs fois afin de relancer le traitement de mise à jour. Au bout de 2 ou 3 essais, le script devrait passer.

Migration Magento de 1.4 à 1.5 et de 1.5 à 1.6

Il existe sur le Web de multiples forums expliquant les migrations Magento. Cependant, il est parfois difficile de s’y retrouver et les méthodes proposées ne sont pas forcément les plus simples.

De plus, les explications sont souvent données pour des personnes ayant un accès SSH vers leur serveur. Or en réalité peu d’e-commerçants possèdent ce privilège.

C’est pourquoi je vais vous expliquer la méthode que j’utilise pour migrer mes sites Magento. Je vous conseille pour cela de travailler en local. Un outil tel que WAMP est l’idéal. Il est également préférable de migrer d’abord vers la version 1.5, tester puis continuer la migration vers 1.6.

Voici le déroulement de la migration :

  1.  Installer dans votre environnement de développement la version de votre boutique en ligne qui est en production
  2. Vérifier que la boutique fonctionne correctement.
  3. Télécharger la nouvelle version de Magento vers laquelle vous voulez migrer puis décompresser l’archive en local.
  4. Créer une nouvelle base de données identique à celle de Production
  5. Dans cette nouvelle base de données, modifier les champs web/unsecure/base_url et web/secure/base_url  de la table config_core_data pour pointer vers la nouvelle installation Magento.
  6. Copier le fichier /app/etc/local.xml de votre ancienne installation vers la nouvelle installation. Votre nouvelle installation pointe désormais vers l’ancienne base de données
  7. Aller sur votre navigateur Web et rafraîchir la page http://localhost/magento_new. La page va mettre à jour pendant quelques minutes votre ancienne base de données.
Voilà, votre boutique est mise à jour. Il ne vous reste qu’à récupérer vos plugins et modules :
  • /app/code/community -> dossier des plugins téléchargés via MagentoConnect
  • /app/code/local -> dossier des plugins personnels
  • /app/design/frontend -> dossier des thèmes
  • /app/etc/module/ -> fichiers xml déclarants vos modules
  • /skin/frontend/-> dossier des thèmes (images, styles css)