Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-01-2009 12:48:09

Felix38
Nouveau membre
Date d'inscription: 11-01-2009
Messages: 6

[Résolu][Zend_Db][1.7] Ne peut se connecter à MYSQL par le socket

Bonjour à tous!
J'ai quelques problèmes avec la connexion à la base de donnée...
Sur la page d'accueil et les pages de type (/index/ ....), tout fonctionne très bien les données de la bdd sont bien affichés, mais sur les pages d'inscription (/inscription/ ...) j'ai une page blanche avec l'erreur suivante :
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
J'ai trouvé deux topics qui avaient des problèmes similaires :
http://www.z-f.fr/forum/viewtopic.php?id=1608 (je suis sous 1and1 aussi) mais malheuresement personne n'a répondu.
et celui-ci :
http://www.z-f.fr/forum/viewtopic.php?id=1221 mais dans mon fichier config j'ai bien "dbxxx.1and1.fr" et non localhost.
Je suis un peu perdu .. Voici les données de mon fichier config.ini :

[dev]

database.adapter         = pdo_mysql

database.params.host     = db927.1and1.fr

database.params.username = pseudo

database.params.password = motdepass

database.params.dbname   = nomdelabase

layout.layout     = layout

layout.contentKey = contenu

Dans Library/Zend/Db/Adaptater/db2.php j'ai trouvé les lignes suivantes :


protected $_config = array(
        'dbname'       => null,
        'username'     => null,
        'password'     => null,
        'host'         => 'localhost',
        'port'         => '50000',
        'protocol'     => 'TCPIP',
        'persistent'   => false
    );

J'ai essayé de modifier cela avec mes données de connexion mais sans succès.

J'ai contacté 1and1 pour savoir si le problème venait d'eux ils m'ont répondu le message suivant :

Bonjour Madame, Monsieur,

Sur le serveur il n'y a pas de serveur mysql en local. Vous devez
indiquer dans votre script les nouveaux codes d'accès à la base que vous
trouvez dans l'espace client sous 1&1 administration mysql.

Cordialement,
Etienne

Bref, je ne sais plus trop quoi faire.
Merci beaucoup !!

Félix.

Dernière modification par Felix38 (27-01-2009 18:37:14)

Hors ligne

 

#2 24-01-2009 13:46:11

neni
Membre
Lieu: Nantes
Date d'inscription: 12-11-2007
Messages: 27

Re: [Résolu][Zend_Db][1.7] Ne peut se connecter à MYSQL par le socket

Le problème semble venir du contrôleur d'inscription.
Mais ne sachant pas comment la base de données est initialisée, ni comment est architecturé le code, il est bien délicat de répondre pertinemment.

Pour être sûr d'utiliser la bonne base de données, le plus simple est de mettre dans le boostrap une chose du type:
$db = Zend_Db::factory($config->database);
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db', $db);

Ainsi, la bdd par défaut est bien celle décrite dans le fichier de configuration, et au pire pour la retrouver n'importe où, il suffit de faire:
$db = Zend_Registry::get('db');

Sinon, "/Zend/Db/Adaptater/db2.php" est le code pour se connecter à une base DB2 d'IBM, ce qui n'a rien à voir avec MySQL.

Hors ligne

 

#3 25-01-2009 16:19:40

Felix38
Nouveau membre
Date d'inscription: 11-01-2009
Messages: 6

Re: [Résolu][Zend_Db][1.7] Ne peut se connecter à MYSQL par le socket

Merci Neni de ton message!
Je débute tout juste et je ne saisis pas bien là ou je dois insérer ce code ... Voici le contenu de mon bootstrap :

Bootstrap a écrit:

ini_set('display_errors','1');
define('APP_USE_TYPE','dev');
define("WEBDIR","..........");
error_reporting(E_ALL | E_STRICT);
$appDir = realpath("......./application/");
define("APP_DIR",$appDir);
set_include_path($appDir.PATH_SEPARATOR.'ctrl'.PATH_SEPARATOR.'library'.PATH_SEPARATOR.$appDir . PATH_SEPARATOR . $appDir . '/model' . PATH_SEPARATOR . get_include_path());
require ('Zend/Loader.php');
Zend_Loader::registerAutoload();
$frontController = Zend_Controller_Front::getInstance();
$frontController->registerPlugin(new cal_plugin_db());
$frontController->setRequest(new Zend_Controller_Request_Http());
$frontController->throwExceptions(true);     
require_once 'Zend/Cache.php';   
$frontController->setControllerDirectory($appDir.'/ctrl');
try{
    $frontController->dispatch();
}catch(Exception $e){
    exit ($e->getMessage());
}

Le controller d'index et d'inscription sont quasi-similaires... JJe ne pense pas que le problème vienne de là ... (si ?).

Ce qui est étrange c'est qu'avant le changement d'hébergeur cela fonctionnait parfaitement.

neni a écrit:

Sinon, "/Zend/Db/Adaptater/db2.php" est le code pour se connecter à une base DB2 d'IBM, ce qui n'a rien à voir avec MySQL.

Autant pour moi désolé !

Merci!

Hors ligne

 

#4 26-01-2009 17:44:31

neni
Membre
Lieu: Nantes
Date d'inscription: 12-11-2007
Messages: 27

Re: [Résolu][Zend_Db][1.7] Ne peut se connecter à MYSQL par le socket

Là encore, ce n'est pas facile de te répondre...
Le problème est que la connexion n'est pas faite à la BDD (ou pas bien définie).

Si cette connexion est faite au niveau des contrôleurs, le code doit être identique dans celui de l'index et l'inscription.

Essaie de mettre cela après la ligne Zend_Loader::registerAutoload(); (en mettant le bon fichier de conf):

Code:

try{
    $config = new Zend_Config_Ini('fichier_de_config.ini');
    $db = Zend_Db::factory($config->database);
    $db->getConnection();
    Zend_Db_Table::setDefaultAdapter($db);
    Zend_Registry::set('db', $db);
}catch(Exception $e){
    echo nl2br($e);
}

Ensuite, dans les contrôleurs (et dans "cal_plugin_db" si il y a un rapport avec la  BDD), enlève tout ce qui ressemble à une ouverture de BDD.

Dans tes contrôleurs, lorsqu'il y a besoin de la BDD, il suffit de faire (une seule fois par méthode):

Code:

$db =Zend_Registry::get('db');
// Ensuite, ce que tu veux...
$db->$db->fetchAll('SELECT * FROM bugs WHERE bug_id = ?', 2);
$result = $db->fetchAll($sql, 2);

Hors ligne

 

#5 27-01-2009 18:36:43

Felix38
Nouveau membre
Date d'inscription: 11-01-2009
Messages: 6

Re: [Résolu][Zend_Db][1.7] Ne peut se connecter à MYSQL par le socket

Salut neni !
Encore une fois : merci !
Désolé de faire une réponse si tardive mais j'attendais de comprendre et je n'osais pas te répondre que je n'avais toujours pas trouvé !
Finalement tu avais raison dès le début ...
Le indexcontroller et le inscriptioncontroller sont un poil différents.
Pour je ne sais quel raison au lien de se connecter normalement, celui qui a codé a utilisé un classe :

Zend_Loader::loadClass("connection_connection");

Dans laquelle étaient stockés les infos de connexion ....
J'ai modifié et maintenant c'est bon.
Enfin c'est étrange, 1 fois sur 2 il m'affiche "connection refused"...
Bref, je suis vraiment désolé du dérangement !
Merci merci

Dernière modification par Felix38 (27-01-2009 18:42:34)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages