Par le

Lorsque j'ai mis à niveau mon serveur Prestashop de Ubuntu 14.04 à Ubuntu 16.04, mes produits Prestashop n'étaient pas affichés sur les pages de catégorie. Qui m'a-t-il pris ? Mon serveur a été piraté ?

En fait, il s'agit d'un problème de base de données en raison de Mysql 5.7 sur Ubuntu 16.04. Avez-vous un plan pour télécharger Prestashop et installer votre site ecommerce sur un serveur Ubuntu ? C'est une bonne idée, mais ce problème aura effet à tous les sites Prestashop en cours d'exécution sur Ubuntu 16.04. Prenez quelques minutes ici pour savoir comment le réparer!!!

"image" url"https://www.prestasoo.com/images/stories/prestashop-product-lost-in-categories.jpg" height"720" width"1280"

J'ai reçu un message de @Casper_O sur Twitter que les produits sur notre page de démonstration Prestashop n'étaient pas affichés sur les pages de catégorie qui s'exécutent sur un serveur Ubuntu 16.04 LTS avec Apache, Pagespeed, PHP 7 et MySQL 5.7. Prenez quelques minutes sur elle, j'ai vu quelques requêtes MySQL échoué et les produits n'ont pas été affichés correctement.

Je n'ai pas mis longtemps pour me rendre compte que cela est dû au mode MySQL Strict. Prestashop 1.6 ( et Prestashop 1.7 ? ) ne sont pas compatibles avec le mode strict MySQL. Nous devons l'éteindre pour corriger l'erreur. D'autres applications qui ne sont pas compatibles avec le mode Strict MySQL. Donc, si vous avez un plan pour exécuter votre site Prestashop sur Ubuntu 16.04, vous devriez envisager de désactiver le mode Strict.

Qu'est-ce que le mode Strict MySQL ?

Le mode strict traite la façon dont les valeurs invalides ou manquantes dans les requêtes SQL. Il est disponible en MySQL et MariaDB et activé par défaut dans MySQL 5.7 et MariaDB 10. Bien que le désactivation soit sans danger dans la plupart des cas, il peut parfois causer des erreurs inattendues dans les tableaux de base de données.

Comment désactiver le mode Strict MySQL ?

Il est relativement facile de désactiver le mode strict MySQL en Ubuntu 16.04 LTS. Cela peut fonctionner sur d'autres versions de Linux telles que CentOS. Commencez par vous connecter à votre VPS en tant qu'utilisateur racine avec SSH et créez un nouveau fichier .cnf :

sudo nano /etc/mysql/conf.d/strict_mode.cnf

Collez le code suivant dans ce fichier :

[mysqld]
sql_mode IGNORE_SPACE,NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUT

Enregistrer et fermer le fichier. Et puis redémarrer le serveur MySQL.

service mysql redémarrer

C'est tout ce que :)