THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


bonjour, mon hebergeur vient de migrer mon site.
je ne sais pas ce qu'il s'est passé mais les commandes ne se créent plus ....
ni en manuel, ni via le front office, le mail est envoyé mais commande pas enregistré, ou trouver les requetes de création dans la BD ? ces cons (les hebergeurs) ont tout changé, nom de la base, utilisateurs ... merci


Thelia 1.5.2

Offline


Il faudrait analyser ce qu'il se passe avec la création des commandes, et déterminer les erreurs éventuelles (pas facile avec Thelia 1 sans aller dans le code). J'imagine que si la boutique fonctionne (à part les commandes), ce n'est sans doute pas un problème de connexion à la base de données.


OpenStudio Toulouse

Offline


salut merci pour ta réponse je viens de trouver je penses j'ai le parametre sqlmode STRICT_TRANS_TABLES positionné dans leur nouveau mysql
j'ai fait la demande pour le retirer car seul le "superadmin" peut le faire ..
je cherche une solution pour passer outre car je ne suis pas certains qu'ils bougent rapidement ..


Thelia 1.5.2

Offline


Tu peux ajouter cette requete lors de l'ouverture de la connexion à la base de données dans Cnx.class.php :

SET @@GLOBAL.sql_mode='NO_ENGINE_SUBSTITUTION', @@SESSION.sql_mode='NO_ENGINE_SUBSTITUTION'


OpenStudio Toulouse

Offline


merci je teste, il faut mettre ca juste aprèe le
<?php

?


Thelia 1.5.2

Offline


Après mysql_query("SET NAMES UTF8", self::$db_handle); tu ajoute

mysql_query("SET @@GLOBAL.sql_mode='NO_ENGINE_SUBSTITUTION', @@SESSION.sql_mode='NO_ENGINE_SUBSTITUTION'", self::$db_handle);


OpenStudio Toulouse

Offline


sad je viens d essayer ca ne fonctionne pas

    public static function getHandle() {
            if (self::$db_handle == -1) {

                self::$db_handle = @mysql_connect(
                        THELIA_BD_HOST,
                        THELIA_BD_LOGIN,
                        THELIA_BD_PASSWORD) or die('Le serveur de base de données n\'est pas accessible.');

                mysql_query("SET NAMES UTF8", self::$db_handle);
                mysql_query("SET @@GLOBAL.sql_mode='NO_ENGINE_SUBSTITUTION', @@SESSION.sql_mode='NO_ENGINE_SUBSTITUTION'", self::$db_handle);

                if (! self::$db_handle && $_REQUEST['erreur'] != 1) {
                    header('HTTP/1.1 503 Service Temporarily Unavailable');
                    header('Status: 503 Service Temporarily Unavailable');

                    die("Connexion à la base de données impossible");
                }

                mysql_select_db(THELIA_BD_NOM, self::$db_handle) or die('Echec de selection de la base de données.');
            }

            return self::$db_handle;
        }
    }


Thelia 1.5.2

Offline


"ca ne fonctionne pas " ? C'est à dire ?


OpenStudio Toulouse

Offline


le site fonctionne correctement, je ne peux créer de fiche article, ni de client ni de commande
Pour les clients le process fonctionne jusqu'au moment du règlement ou paypal dit panier vide et si on choisi cheque la commande passe mais les mails de confirmation sont vide et rien n'est enregistré en base


Thelia 1.5.2

Offline


Bon, hé bien il te reste à analyser les erreurs SQL lors des requêtes. Décommente la ligne 46 de Cnx.class.php, va configurer dans le B.O. 'Configuration -> Gestion des logs" et coche "Fichier texte". Dans "Définit les messages qui seront affichés" choisis "Informations"

Essaie de passer une commande et regarde ce qu'il s'est passé dans le fichier de log dans client/tlog/log-thelia.txt


OpenStudio Toulouse

Offline


j'ai modifié et ajouté un sql die pour avoir le message

Erreur SQL: Incorrect integer value: '' for column 'id' at row 1 - Requête: insert into `venteadr` (`id`,`raison`,`entreprise`,`nom`,`prenom`,`adresse1`,`adresse2`,`adresse3`,`cpostal`,`ville`,`tel`,`pays`) values("","3","","MARQUILLY","FABRICE","156 Rue de l\'Espoir","","","59260","LEZENNES","","64")


Thelia 1.5.2

Offline


Typiquement un problème avec STRICT_TRANS_TABLE.

Il y a une erreur sur mysql_query("SET @@GLOBAL.sql_mode='NO_ENGINE_SUBSTITUTION', @@SESSION.sql_mode='NO_ENGINE_SUBSTITUTION'", self::$db_handle); ?


OpenStudio Toulouse

Offline


Comment voir si le SET que tu m'as dit est bien pris en compte ?


Thelia 1.5.2

Offline


Déjà tu regardes si mysql_query réussit.


OpenStudio Toulouse

Offline


Comment puis je voir ?
merci


Thelia 1.5.2

Offline


en sortie du My query j'ai un
self:$dbhandle = Resource id #73

ca te parle ? merci


Thelia 1.5.2

Offline


Rebonjour je tiens tout d'abord à te remercier pour toute ton aide,
j'ai modifié afin de trouver des résultats de MySQL mode suite au SET que tu m'a dit d'ajouter, impossible, jen n'y arrives pas
j'ai tenté ce code
$query = sprintf("SELECT @@GLOBAL.sql_mode,@@SESSION.sql_mode",
    mysql_real_escape_string($global),
    mysql_real_escape_string($session));
   
$result = mysql_query($query);

if (!$result) {
    $message  = 'Requête invalide : ' . mysql_error() . "\n";
    $message .= 'Requête complète : ' . $query;
    die($message);
}
while ($row = mysql_fetch_assoc($result)) {
    echo $row['global'];
    echo $row['session'];
}
exit;

je n'ai malheureusement pas réussi, je suis alors allé sur la console mysql de l'hebergeur,
j'ai rentré les instructions SET @GLOBAL.sql_mode='NO_ENGINE_SUBSTITUTION'
j'ai une erreur acces denied, par contre ca passer pour la session

j'ai donc modfiié le code CNX.CLASS.PHP et ne faire qu'un

mysql_query("SET  @@SESSION.sql_mode='NO_ENGINE_SUBSTITUTION'", self::$db_handle);

et la ca fonctionne le site fonctionne correctement .
penses tu que ca suffit ou faut il trouver la soluce pour modifier le GLOBAL ? merci


Thelia 1.5.2

Offline


Je suppose que tu n'as pas les droits suffisants pour modifier globalement la variable sql_mode. Mais si ça marche pour la session courante, alors youpi.


OpenStudio Toulouse

Offline


merci encore smile:)


Thelia 1.5.2