Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour all,
Comme beaucoup je debute sous zend , et les ressources en langue francaise sont encore limiter ,j'ai donc beaucoup de mal à resoudre mes problemes.
je travail sous :
- php 5.2 //php version
- oci8.so // lib oracle
Je n'ai pas la main sur le server pour modifier ma structure , genre passer sous pdo_oci.so etc etc
j'ai deja realisé quelque programme en php5 sans framework juste avec des classes de bdd perso
Et la on a decidé de passer sous zend framework donc je realise mon premier programme.
je plante depuis hier sur l'abstraction de donnée. probleme de connection à ma base de donnée:
mon erreur :
Exception information: Message: 12154 ORA-12154: TNS:could not resolve the connect identifier specified *
mon app.ini
[production] database.adapter = "oracle" database.params.host = "192.168.xxx.xxx" database.params.username = "xxx" database.params.password = "xxx" database.params.dbname = "FRxx" database.params.options.caseFolding = 2 database.params.options.autoQuoteIdentifiers = 0 [development : production] database.adapter = "oracle" database.params.host = "192.168.xxx.xxx" database.params.username = "xxx" database.params.password = "xxx" database.params.dbname = "FRxx" database.params.options.caseFolding = 2 database.params.options.autoQuoteIdentifiers = 0 [testing : production] database.adapter = "oracle" database.params.host = "192.168.xxx.xxx" database.params.username = "xxx" database.params.password =" xxx" database.params.dbname = "FRxx" database.params.options.caseFolding = 2 database.params.options.autoQuoteIdentifiers = 0
mon bootstrap
<?php defined('APPLICATION_PATH') or define('APPLICATION_PATH', dirname(__FILE__)); defined('APPLICATION_ENVIRONMENT') or define('APPLICATION_ENVIRONMENT', 'development'); $frontController = Zend_Controller_Front::getInstance(); $frontController->setControllerDirectory(APPLICATION_PATH . '/controllers'); $frontController->setParam('env', APPLICATION_ENVIRONMENT); Zend_Layout::startMvc(APPLICATION_PATH . '/layouts/scripts'); $view = Zend_Layout::getMvcInstance()->getView(); $view->doctype('XHTML1_STRICT'); $configuration = new Zend_Config_Ini(APPLICATION_PATH . '/config/app.ini', APPLICATION_ENVIRONMENT); $dbAdapter = Zend_Db::factory($configuration->database); Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter); $registry = Zend_Registry::getInstance(); $registry->configuration = $configuration; $registry->dbAdapter = $dbAdapter; unset($frontController, $view, $configuration, $dbAdapter, $registry);
j'ai peux etre oublié quelque chose de tres simple je sais pas
si des lumieres pouvent eclairer mon chemin
Dernière modification par romain (22-01-2009 11:16:55)
Hors ligne
Hello,
Il faut définir une variable d'environnement TNS_ADMIN qui indique le chemin vers ton fichier tnsnames.ora.
Ensuite il faut s'assurer que ce fichier est correctement défini.
A+
Dernière modification par mikaelkael (20-01-2009 11:42:57)
Hors ligne
Merci pour ta reponse
j'ai d'autres questions :
est - il possible de ce connecter sans passer par cette variable d'environnement TNS_ADMIN
en dure dans le code peux etre ?
Hors ligne
Hello,
Oui si tu as oracle database server et que tnsnames.ora est dans ${ORACLE_HOME}/networl/admin.
Autre possibilité : tu étends Zend_Db_Adapter_Oracle et tu changes la méthode _connect() pour fonctionner sans tnsnames.
A+
Hors ligne
ou jdbc
Hors ligne
Bon , ce fut une misére , mais j'ai trouver une solution
J'ai crée un fichier tnsnames.ora avec ma chaine de connection , j'ai jamais reussit à la faire fonctionner !
avec la bonne variable d'environement qui va bien et tout
Pour info j'utilise l'instant client d'oracle sur mon srv linux et donc j'expose ma solution pour les futurs bloquer comme moi ^^
En faite j'ai mis ma chaine de connection dans mon app.ini sur dbname.
c'est peux etre une bidouille mais ca permet d'avancer
[development : production] database.adapter = "oracle" database.params.host = "192.168.xxx.xxx" database.params.username = "xxx" database.params.password = "xxx" database.params.dbname = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxx) (PORT = 1521)))(CONNECT_DATA =(SID = FRxxx)))" database.params.options.caseFolding = 2 database.params.options.autoQuoteIdentifiers = 0
merci pour votre aide
a bientot
Hors ligne