Bonjour,

J'ai coder mon site en local avec MAMP pour mac et j'ai voulu le mettre sur mon serveur en production cependant j'ai une erreur qui n'est pas apparu en local.

Voici la requête qui pose problème :
SELECT Compte.name, Compte.solde, Compte.active, Compte.nb, Compte.id, Compte.slug FROM comptes AS Compte WHERE compte.user\_id = 29 AND compte.active = 1

Le problème viens sur WHERE compte.user\_id = 29 AND compte.active = 1
Il faudrait un C majuscule à compte.
J'utilise cakephp et j'ai mis a jour mySql (5.1->5.5)

Si vous avez des idées

Merci :D

6 réponses


extrarox
Réponse acceptée

Ok, c'est bien toi qui mets le conditions.

Dans tes conditions, au lieu de mettre compte.user_id et compte.active, essai avec comptes.active et comptes.user_id ou Compte.active et Compte.user_id

A+

Salut,

Qu'est-ce qui fait que tu as avec ou sans majuscule?

Tu peux donner un peu de code pour voir?

A+

Salut, respect tu les conventions cakephp ?

le nom de table en minuscule et au pluriel?

Pour cakephp 2.0 :

Ta table devrait se nommer 'comptes'.
Ton controller : ComptesController
Ton Model: Compte

Ça devrait ne pas poser problème.

Sinon poste-nous ton code :)

XciD
Auteur

Je respecte bien les conventions, sur mon premier serveur tout fonctionne alors que sur le production j'ai cette erreur.
Ma table se nomme comptes, controller : ComptesController et mon model :Compte.

Voici l'erreur détaillé :

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'compte.user_id' in 'where clause'

PDOException::$queryString = "SELECT `Compte`.`id`, `Compte`.`nb`, `Compte`.`name`, `Compte`.`compte_parent`, `Compte`.`solde`, `Compte`.`solde_initial`, `Compte`.`solde_limite`, `Compte`.`slug`, `Compte`.`active`, `Compte`.`user_id`, `Compte`.`operation_count`, `Compte`.`created` FROM `comptes` AS `Compte` WHERE `compte`.`user_id` = 29 AND `compte`.`active` = 1 LIMIT 20"

Quand je tape cette requete dans phpmyadmin, cela me retourne bien une erreur alors que la meme requeste dans phpmyadmin en local me donne le bon resultat :

Affichage des lignes 0 - 0 (1 total, Traitement en 0.0003 sec.)
SELECT `Compte`.`id` , `Compte`.`nb` , `Compte`.`name` , `Compte`.`compte_parent` , `Compte`.`solde` , `Compte`.`solde_initial` , `Compte`.`solde_limite` , `Compte`.`slug` , `Compte`.`active` , `Compte`.`user_id` , `Compte`.`operation_count` , `Compte`.`created` 
FROM `comptes` AS `Compte` 
WHERE `compte`.`user_id` =29
AND `compte`.`active` =1
LIMIT 20

Voici mon ComptesController:

public function membre_menu() {
        //Géneration du menu
        $comptes = $this->Compte->find('all',array(
            'recursive' => -1,
            'conditions' => array(
                'compte.user_id' => $this->Auth->user('id'),
                'compte.active' => '1'),
            'fields' => array('name','solde','active','nb','id','slug') 
            )
        );
        $corbeille = $this->Compte->find('count', array(
            'recursive' => -1,
            'conditions' => array(
                'active' => '0',
                'user_id' => $this->Auth->user('id'),
                )
            )
        );
        $comptes]=$corbeille;
        return $comptes ;

    }

Merci pour votre aide :)

XciD
Auteur

effectivement Compte.active et Compte.user_id fonctionne, par contre c'est vraiment bizard que cela fonctionne sur une base de donnée et pas une autre :/
Merci !!

L'un doit respecter la case et pas l'autre. Surement une option.

a+