Skip to content

Corriger l’erreur « ‘ps_tablename’ doesn’t exist » sur PrestaShop avec MySQL 8

Si tu es là c’est que tu as sûrement été confronté à l’une des erreurs suivantes en voulant utiliser le module Mondial Relay (3.0.4) sur PrestaShop (pour ma part, version 1.7.6.4) :

Mauvaise requête SQL
Table ‘ps_mondialrelay_selected_relay’ doesn’t exist
Table ‘ps_mondialrelay_carrier_method’ doesn’t exist
Table ‘ps_mondialrelay_processlogger’ doesn’t exist
Table ‘ps_mondialrelay_processmonitor’ doesn’t exist

Ou en souhaitant utiliser le module Paypal (5.1.2) sur PrestaShop (pour ma part, version 1.7.6.4) :

Mauvaise requête SQL
Table ‘ps_paypal_capture’ doesn’t exist
Table ‘ps_paypal_ipn’ doesn’t exist
Table ‘ps_paypal_order’ doesn’t exist
Table ‘ps_paypal_processlogger’ doesn’t exist
Table ‘ps_paypal_vaulting’ doesn’t exist

Voici l’astuce que j’ai utilisée pour arriver à corriger ces problèmes et faire fonctionner correctement ces modules. Cette astuce fonctionne probablement aussi avec d’autres modules qui poseraient le même souci.

Mon PrestaShop 1.7.6.4 est installé sur un serveur avec PHP 7.2 et MySQL 8.0.

Le problème est que lorsque l’on installe ces modules, certaines ou toutes les tables SQL dédiées à ces modules ne s’installent pas.

Voici la correction que j’ai faite sur les modules pour que les tables SQL puissent s’installer :

Pour Paypal :

  • Décompresser le zip du module
  • Ouvrir le fichier paypal/vendor/ppbtlib/src/Db/DbTable.php
  • Au niveau de la fonction « create() » retirer « COLLATE=$this->collation »

Avant :

$result = $this->db->execute(« CREATE TABLE IF NOT EXISTS `$this->name` (« .
implode(‘, ‘, array_merge($this->columns, $keys)).
« ) ENGINE=$this->engine CHARSET=$this->charset COLLATE=$this->collation; »);

Après :

$result = $this->db->execute(« CREATE TABLE IF NOT EXISTS `$this->name` (« .
implode(‘, ‘, array_merge($this->columns, $keys)).
« ) ENGINE=$this->engine CHARSET=$this->charset; »);

  • Sauvegarder la modification
  • Compresser en zip le dossier paypal
  • Utiliser ce nouveau zip pour installer le module sur votre boutique PrestaShop

Pour Mondial Relay :

  • Même principe sauf que là il s’agit du fichier mondialrelay/vendor/totpsclasslib/src/Db/DbTable.php

Il semblerait que le paramètre COLLATE ne soit pas (ou mal) reconnu par MySQL 8.0

 

Published inDéveloppementeCommercePrestashop

2 Comments

  1. Jean Francois G Jean Francois G

    Bonjour, ou avez vous trouvé cette 3.0.4 ? Sur addon c’est encore la 3.0.3 ..
    Un lien ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *