Jump to content

[Help] Prestashop 1.6.1.24 : migration forcée de MySql 5.7 vers MySql 8


Recommended Posts

Bonjour,

Cette semaine, notre hébergeur va migrer notre presta 1.6.1.24 vers un nouveau serveur qui ne disposera plus de MySql 5.7 mais bien d’une version 8.X

J’ai entamé des tests en local ainsi qu’effectué des recherches via ce forum notamment, mais sans trouver un récapitulatif des modifications/vérifications à faire pour s’assurer que tout tourne bien. J’en appelle donc à votre expérience.

Voici ce que j’ai trouvé pour l’instant.

Mode d’authentification de Mysql

J’ai lu que MySql8 passait pour l’authentification à la DB par le plugin caching_sha2_password au lieu du plugin employé précédemment, mysql_native_password

J’ai lu qu’il fallait modifier le user utilisé pour la connexion à la DB de sorte à forcer l’usage de la méthode d’authentification classique :

alter user ‘nomduuser’@localhost’ identified with mysql_native_password by 'motdepassedeouf';

Mais en dehors de ça, est-ce qu’il y a une quelconque modification à faire au sein du presta ?

MySql Engine

Dans un message du forum quelqu’un parle de modifier, dans setting.inc.php :
define('_MYSQL_ENGINE_', 'InnoDB');
par define('_MYSQL_ENGINE_', 'My Sql 8');

Cela me parait assez étrange, d’autant que même changer cette constante par n’importe quelle valeur passe (peut-être parce qu’il y a un fallback par défaut quelque part). Du coup est-ce que ça a le moindre sens ?

Dysfonctionnement dans les déclinaisons

Le plus gros problème de fonctionnement semble lié aux déclinaisons, dont les quantités indiquées diffèrent selon que l’on est en front et en back office. C’est abordé régulièrement, un utilisateur du forum parle d’une modification à faire dans la classe product, mais sans préciser la solution. Est-ce que cela pourrait être ceci : https://github.com/PrestaShop/PrestaShop/issues/13833 ?

My.cnf

Enfin, j’ai cru comprendre que certains problèmes pouvaient être liés à la configuration de MySql, et qu’il fallait peut-être éditer dans le my.cnf la variable sql-mode.

Je pense qu’actuellement j’en ai déjà dans la 5.7 une version modifiée pour accepter les dates au format 0000 car c’est employé dans les anciennes versions de presta, est-ce que la définition suivante pourrait toujours être valide ?

sql-mode="NO_ENGINE_SUBSTITUTION,ERROR_FOR_DIVISION_BY_ZERO,ALLOW_INVALID_DATES"

D’avance merci !

Link to comment
Share on other sites

Le 16/01/2024 à 4:31 PM, Eolia a dit :

Vous devriez tester PhenixSuite qui vous permet de rester en version 1.6 mais avec la prise en charge des dernières mises à jour (PHP8.2 si vos modules le supportent, MySQL8, etc...)

https://eoliashop.com/phenixsuite/prestashop-new

Je vais faire des tests aujourd'hui en ce sens, le travail réalisé est vraiment fantastique. 

C'est H.S. par rapport au sujet de base de cette discussion, mais par contre de + en + de modules vitaux dont nous sommes dépendants abandonnent malheureusement cette branche et je pense ne plus pouvoir retarder longtemps une migration à la 1.7+. 

Link to comment
Share on other sites

Vous avez une liste de ces modules "vitaux" qui vous manquent ?

Si vous décidez de migrer vers les versions 1.8 ou 9 soyez bien conscient que vous allez devenir de plus en plus prisonniers du système.

Depuis que Prestashop a été racheté par une entreprise de logistique italienne il y a 1 an 1/2 le projet a complètement changé et ils font tout pour pousser les utilisateurs à passer à la solution payante (aka Shopify en % du chiffre d'affaire) et en concentrant les modules tout-en-1 (comme ps_checkout) liés à ps_account qui transmettent TOUTES les données de votre shop à Prestashop (clients, ventes, catalogue, etc...).

Il y a encore 150 000 boutiques en version 1.6 et il est hors de question de les laisser tomber par choix stratégique.

Link to comment
Share on other sites

Ne serait-ce qu'en terme de module de paiement, Ingenico (y compris le module de chez SellXed) & Mollie ne sont plus maintenus (ce dernier ne fonctionnant tout simplement plus). Même tarif visiblement pour les modules de BPost & DPD Benelux, même si là je sors les pincettes de rigueur car c'était peut-être un question d'interlocuteur. 

Dans tous les cas, je trouve ça très regrettable car il me semble que le créneau qu'occupait prestashop - une espère de solution intermédiaire en terme de complexité entre un shopify-like et magento - semble destiné à devenir vacant. 

Link to comment
Share on other sites

Mollie est toujours dispo en version 4.54 (pas très compatible PHP 8 mais pas sûr que la version 1.7 le soit).

Il y a 4 heures, french50 a dit :

Dans tous les cas, je trouve ça très regrettable car il me semble que le créneau qu'occupait prestashop - une espère de solution intermédiaire en terme de complexité entre un shopify-like et magento - semble destiné à devenir vacant. 

D'où l'intérêt de PhenixSuite justement pour ne pas laisser cet espace vacant :)

Link to comment
Share on other sites

  • 2 months later...

Bonjour, vous avez eu des problème particulier ? Nous c'est pareil notre hébergeur va forcer la migration de nos sites Prestashop 1.7.8.7 de la version MySQL 5.7 vers 8.X à date du 17 Avril. J'ai déjà effectuer des test et pour le moment j'ai l'impression que sur le papier, aucun bug important, voir zéro bug visible, je voulais savoir si vous avez rencontré des soucis, si oui lesquels ?

Edited by dydy59 (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Mon client rencontre un problème depuis la migration vers  MySQL 8. Sur la fiche produit, dans l'onglet Quantités, les id des déclinaisons sont mélangés, ce qui fait que lorsque par exemple on met 1 en quantité pour un canapé couleur gris anthracite, c'est le canapé couleur gris clair qui est affecté.
Le problème se situe au niveau du nom des champs des quantités. Exemple qty_5532 alors que ça devrait être qty_5531.

Link to comment
Share on other sites

Problème résolu !
Il faut ajouter dans la fonction getAttributesResume() de la classe Product.php un tri : ORDER BY pa.`id_product_attribute` ASC

Voici le code :

$combinations = Db::getInstance()->executeS('SELECT pa.*, product_attribute_shop.*
				FROM `'._DB_PREFIX_.'product_attribute` pa
				'.Shop::addSqlAssociation('product_attribute', 'pa').'
				WHERE pa.`id_product` = '.(int)$this->id.'
				GROUP BY pa.`id_product_attribute`
                ORDER BY pa.`id_product_attribute` ASC');

 

Link to comment
Share on other sites

  • 7 months later...

c'est bon j'ai trouvé je peux éditer mais je peux pas l'ouvrir, étrange mais bon le principal c'est que je puisse modifier cette page code. mais j'ai un problème quand je rajoute les 2 ligne de code un message d'erreur apparait sur mon site 

 

merci pour votre aide

Capture d’écran (20).png

Link to comment
Share on other sites

J'ai fait une restauration du coup, car je pouvez plus rien modifier dans mes produit ( quantité, texte, image ....)ça mouliné, du coup je c'est pas si je peux tout de même faire votre manipulation afin de résoudre mon problème 

Cordialement 

 

Merci beaucoup pour votre aide

Link to comment
Share on other sites

D'accord, je vais voir si ça change quelque chose (sans problème), car il me semble que j'ai modifié exactement les mêmes lignes. Je ferai ça plus tard, je vous tiens au courant

 

En vous remerciant beaucoup pour votre aide 

Link to comment
Share on other sites

Ok donc si il charge vous aviez dû faire une coquille dans votre fichier.

Pour les déclis mélangées, les produits qui ont été édités/enregistrés avant la mise à jour de Product.php doivent être corrigés (Ré-assignez la décli par défaut dans l'onglet "Déclinaisons")

Edited by Eolia (see edit history)
Link to comment
Share on other sites

Oui au temps pour moi Product.php ,  du coup j'avais déjà restauré, je suppose que je dois refaire la démarche (bien renommé l'original avant d'injecter Product.php) . Je testerai demain en supprimant au passage /cache/class-index.php

je vous tiens informé. Merci pour votre aide

Link to comment
Share on other sites

Bonsoir,

J'espère que vous allez bien.

du coup j'ai : 

- renommer l'ancien fichier Product.php en Product.php2

- importer la version corrigée de Product.php

Suite à cela je n'ai pas eu besoin de supprimer le fichier /cache/class_index.php. j'ai dû tout de même remettre les quantités de mes produits, dorénavant mes quantités ne se mélangent plus.

 

je tiens à vous remercier fortement Eolia pour le temps et l'aide que vous m'avez donnée

 

Cordialement

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...