Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je débute un peu sur Zend Framework et j'ai l'erreur suivante :
Fatal error: Uncaught exception 'Zend_Db_Table_Row_Exception' with message 'The specified Table 'ParamMagasin' does not have the same primary key as the Row'
Voici ma classe de table :
class ParamMagasin extends Zend_Db_Table
{
protected $_name = 'PARAM_MAGASIN';
//protected $_primary = 'cod_magasin';
}
Et mon appel :
$paramMagasin = new ParamMagasin();
$row = $paramMagasin->fetchRow('COD_MAGASIN='.$idMag);//Que ce soit en majuscules ou en minuscules, c'est pareil (et il arrive bien à récupérer la ligne)
//...(Je ne modifie pas la clé)
$row->save(); //c'est cet appel qui lance l'exception
Ma table est param_magasin et a bien la pk param_magasin_pk sur cod_magasin
pour info
$paramMagasin = new ParamMagasin();
$this->view->paramMagasin = $paramMagasin->fetchAll();
Marche à merveille.
Surement une erreur de débutant...Mais laquelle?
Merci
Dernière modification par Fuggerbit (17-12-2008 16:45:42)
Hors ligne
Hello,
Et ceci fonctionne-t-il ?
$paramMagasin = new ParamMagasin(); $row = $paramMagasin->find($idMag); $row->save();
Pour info, ton autoQuoteIdentifier est-il à false ?
A+
Dernière modification par mikaelkael (17-12-2008 12:10:03)
Hors ligne
J'obtiens :
Call to undefined method Zend_Db_Table_Rowset::save()
mon autoQuoteIdentifier est bien à false
Hors ligne
Hello,
Bien sûr, j'ai oublié qqch :
$paramMagasin = new ParamMagasin(); $row = $paramMagasin->find($idMag)->current(); $row->save();
A+
Hors ligne
Ok, j'obtiens la même erreur qu'au début.
Par contre pourquoi dit il que le nom de la table est ParamMagasin (nom de la classe) au lieu de Param_Magasin? C'est normal
Hors ligne
Booohh mikaelkael il a oublié le "current()", pas bien :p
Essaie en dé-commentant la ligne :
//protected $_primary = 'cod_magasin';
et en t'assurant que ce soit bien le bon champ avec la bonne syntaxe.
A+ benjamin.
Hors ligne
Hello,
Parce que par défaut il utilise le nom de classe pour définir le nom de table. Normalement le protected $_name = 'PARAM_MAGASIN'; sert à surcharger ce comportement. C'est bien décommenter comme dans ton exemple ?
@Delprog: il n'est pas obligatoire de mettre $_primary, contrairement à $_name dans son cas, il va la trouver tout seul.
A+
Dernière modification par mikaelkael (17-12-2008 12:30:40)
Hors ligne
Delprog a écrit:
Booohh mikaelkael il a oublié le "current()", pas bien :p
Essaie en dé-commentant la ligne :Code:
//protected $_primary = 'cod_magasin';et en t'assurant que ce soit bien le bon champ avec la bonne syntaxe.
A+ benjamin.
Oui c'est fait, mais c'est pareil...
En fait si je met le cod_magasin en majuscules, il me dit que le champ n'existe pas, donc en minuscule c'est ok (pour la récup des données)
Hors ligne
mikaelkael a écrit:
Hello,
Parce que par défaut il utilise le nom de classe pour définir le nom de table. Normalement le protected $_name = 'PARAM_MAGASIN'; sert à surcharger ce comportement. C'est bien décommenter comme dans ton exemple ?
@Delprog: il n'est pas obligatoire de mettre $_primary, contrairement à $_name dans son cas, il va la trouver tout seul.
A+
Oui c'est bien décommenté.
Hors ligne
@mikaelkael
Oui c'était un test, pour voir si table n'était par hasard pas mal construite (c'était un peu sans espoir).
@Fuggerbit
Tu peux nous coller ce que contient $row juste après ton fetchRow() ?
Petite remarque: ta classe doit étendre Zend_Db_Table_Abstract et pas Zend_Db_Table (mais rien à voir).
Dernière modification par Delprog (17-12-2008 12:39:21)
Hors ligne
Hello,
Reprenons depuis le début :
- ZF1.7.1 ?
- adaptateur "oracle" ou "pdo_oci" ?
- quelle version d'Oracle ?
A+
@Delprog : rien à voir mais exact
Dernière modification par mikaelkael (17-12-2008 12:41:02)
Hors ligne
J'utilise ZF 1.7.1
Adapter : Oracle
Version de la bdd : 10 il me semble (pas en dessous en tout cas)
Mon objet row, contient les bonnes valeurs...
Hors ligne
Y'a t il un moyen d'afficher tout le contenu de row sans faire appel à chaque valeur?
Hors ligne
var_dump() ou print_r(), mais tu n'auras pas que tes données mais aussi tout le reste
Enfin tu verras bien.
Hors ligne
Delprog a écrit:
var_dump() ou print_r(), mais tu n'auras pas que tes données mais aussi tout le reste
Enfin tu verras bien.
Wah en effet...
<?php echo print_r($this->paramMagasin); ?>
retourne
Zend_Db_Table_Row Object ( [_data:protected] => Array ( [ZEND_DB_ROWNUM] => 1 [COD_MAGASIN] => 13 [COEFF_ORIGINE] => 2,5 [COEFF_AJUSTE] => 3,5 [PDS_SEM_M1] => ,7 [PDS_SEM_M2] => ,3 [ECRETAGE] => 4 [ECART_MIN_INJ] => 1 [SEUIL_MAX_INJ] => 30 [COEFF_MINI] => ,5 [COEFF_MAXI] => 3,5 [PCT_REAS_MIN] => 20 [PCT_REAS_MAX] => 35 [QTE_REAS] => 102 [QTE_ROT] => 19 [PCT_FINAL] => 15,7 [PRIORITE] => 1 [ETAT_AJUSTEMENT] => OK [ETAPE1] => [ETAPE2] => [ETAPE3] => [ETAPE4] => O [ETAPE5] => [ACTIF] => O [REASSORT] => O [ROTATIF_PUR] => [COEFF_PREC] => 3,5 [SENS_PREC] => - [MAX_QTE] => 200 ) [_cleanData:protected] => Array ( [ZEND_DB_ROWNUM] => 1 [COD_MAGASIN] => 13 [COEFF_ORIGINE] => 2,5 [COEFF_AJUSTE] => 3,5 [PDS_SEM_M1] => ,7 [PDS_SEM_M2] => ,3 [ECRETAGE] => 4 [ECART_MIN_INJ] => 1 [SEUIL_MAX_INJ] => 30 [COEFF_MINI] => ,5 [COEFF_MAXI] => 3,5 [PCT_REAS_MIN] => 20 [PCT_REAS_MAX] => 35 [QTE_REAS] => 102 [QTE_ROT] => 19 [PCT_FINAL] => 15,7 [PRIORITE] => 1 [ETAT_AJUSTEMENT] => OK [ETAPE1] => [ETAPE2] => [ETAPE3] => [ETAPE4] => O [ETAPE5] => [ACTIF] => O [REASSORT] => O [ROTATIF_PUR] => [COEFF_PREC] => 3,5 [SENS_PREC] => - [MAX_QTE] => 200 ) [_modifiedFields:protected] => Array ( ) [_table:protected] => ParamMagasin Object ( [_name:protected] => PARAM_MAGASIN [_primary:protected] => Array ( [1] => cod_magasin ) [_db:protected] => Zend_Db_Adapter_Oracle Object ( [_config:protected] => Array ( [dbname] => TEST-ORCL [username] => READYN [password] => READYN [host] => vxnkora1.xanit.mad [options] => Array ( [caseFolding] => 2 [autoQuoteIdentifiers] => 0 ) [driver_options] => Array ( ) ) [_numericDataTypes:protected] => Array ( [0] => 0 [1] => 1 [2] => 2 [BINARY_DOUBLE] => 2 [BINARY_FLOAT] => 2 [NUMBER] => 2 ) [_execute_mode:protected] => 32 [_defaultStmtClass:protected] => Zend_Db_Statement_Oracle [_fetchMode:protected] => 2 [_profiler:protected] => Zend_Db_Profiler Object ( [_queryProfiles:protected] => Array ( ) [_enabled:protected] => [_filterElapsedSecs:protected] => [_filterTypes:protected] => ) [_defaultProfilerClass:protected] => Zend_Db_Profiler [_connection:protected] => Resource id #114 [_caseFolding:protected] => 2 [_autoQuoteIdentifiers:protected] => ) [_schema:protected] => [_cols:protected] => Array ( [0] => cod_magasin [1] => coeff_origine [2] => coeff_ajuste [3] => pds_sem_m1 [4] => pds_sem_m2 [5] => ecretage [6] => ecart_min_inj [7] => seuil_max_inj [8] => coeff_mini [9] => coeff_maxi [10] => pct_reas_min [11] => pct_reas_max [12] => qte_reas [13] => qte_rot [14] => pct_final [15] => priorite [16] => etat_ajustement [17] => etape1 [18] => etape2 [19] => etape3 [20] => etape4 [21] => etape5 [22] => actif [23] => reassort [24] => rotatif_pur [25] => coeff_prec [26] => sens_prec [27] => max_qte ) [_identity:protected] => 1 [_sequence:protected] => 1 [_metadata:protected] => Array ( [cod_magasin] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => cod_magasin [COLUMN_POSITION] => 1 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => 1 [PRIMARY_POSITION] => 1 [IDENTITY] => ) [coeff_origine] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_origine [COLUMN_POSITION] => 2 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [coeff_ajuste] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_ajuste [COLUMN_POSITION] => 3 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pds_sem_m1] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pds_sem_m1 [COLUMN_POSITION] => 4 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pds_sem_m2] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pds_sem_m2 [COLUMN_POSITION] => 5 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [ecretage] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => ecretage [COLUMN_POSITION] => 6 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [ecart_min_inj] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => ecart_min_inj [COLUMN_POSITION] => 7 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [seuil_max_inj] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => seuil_max_inj [COLUMN_POSITION] => 8 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [coeff_mini] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_mini [COLUMN_POSITION] => 9 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [coeff_maxi] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_maxi [COLUMN_POSITION] => 10 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pct_reas_min] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pct_reas_min [COLUMN_POSITION] => 11 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pct_reas_max] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pct_reas_max [COLUMN_POSITION] => 12 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [qte_reas] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => qte_reas [COLUMN_POSITION] => 13 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [qte_rot] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => qte_rot [COLUMN_POSITION] => 14 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pct_final] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pct_final [COLUMN_POSITION] => 15 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [priorite] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => priorite [COLUMN_POSITION] => 16 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etat_ajustement] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etat_ajustement [COLUMN_POSITION] => 17 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape1] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape1 [COLUMN_POSITION] => 18 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape2] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape2 [COLUMN_POSITION] => 19 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape3] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape3 [COLUMN_POSITION] => 20 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape4] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape4 [COLUMN_POSITION] => 21 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape5] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape5 [COLUMN_POSITION] => 22 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [actif] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => actif [COLUMN_POSITION] => 23 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [reassort] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => reassort [COLUMN_POSITION] => 24 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [rotatif_pur] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => rotatif_pur [COLUMN_POSITION] => 25 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [coeff_prec] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_prec [COLUMN_POSITION] => 26 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [sens_prec] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => sens_prec [COLUMN_POSITION] => 27 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [max_qte] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => max_qte [COLUMN_POSITION] => 28 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) ) [_metadataCache:protected] => [_metadataCacheInClass:protected] => 1 [_rowClass:protected] => Zend_Db_Table_Row [_rowsetClass:protected] => Zend_Db_Table_Rowset [_referenceMap:protected] => Array ( ) [_dependentTables:protected] => Array ( ) [_defaultSource:protected] => defaultNone [_defaultValues:protected] => Array ( ) ) [_connected:protected] => 1 [_readOnly:protected] => [_tableClass:protected] => ParamMagasin [_primary:protected] => Array ( [1] => cod_magasin ) ) 1
Ce qui m'échappe c'est qu'un coup les champs sont en majuscule, l'autre coup en minuscule...
Est il judicieux pour moi d'avoir : db.params.options.caseFolding = 2 ?
Ca pourait être une erreur du genre cod_magasin n'est pas pareil que COD_MAGASIN pour lui
Hors ligne
Euh, c'est le $row que tu essaies d'écrire qui m'intéresse plutôt
Hors ligne
Delprog a écrit:
Euh, c'est le $row que tu essaies d'écrire qui m'intéresse plutôt
C'est bien ca :
$row = $paramMagasin->find($idMag)->current();
$this->view->paramMagasin = $paramMagasin->fetchRow();
Ou alors je suis un boulet et je comprend rien à ce que tu me demande C'est au choix ^^
Comme je débute à la fois en PHP et en Zend...
Hors ligne
Au temps pour moi, j'avais mal regardé
A priori je dirais que ça n'a pas de rapport avec la casse.
Le caseFolding = 2 te permet de faire $_name = 'param_magasin' à la place de 'PARAM_MAGASIN', je ne vois pas de rapport.
Après je ne connais pas bien oracle et ses adaptateurs, donc à ce niveau je ne saurais te dire. Mais je doute que ça ait un rapport.
As-tu testé par curiosité avec l'adaptateur "pdo_oci" ?
Peux-tu linker la config de ton DbAdapter ? (hors identifiants bien sûr :p)
Hors ligne
Delprog a écrit:
Au temps pour moi, j'avais mal regardé
A priori je dirais que ça n'a pas de rapport avec la casse.
Le caseFolding = 2 te permet de faire $_name = 'param_magasin' à la place de 'PARAM_MAGASIN', je ne vois pas de rapport.
Après je ne connais pas bien oracle et ses adaptateurs, donc à ce niveau je ne saurais te dire. Mais je doute que ça ait un rapport.
As-tu testé par curiosité avec l'adaptateur "pdo_oci" ?
Peux-tu linker la config de ton DbAdapter ? (hors identifiants bien sûr :p)
Avec pdo_oci je me tappe des erreurs dès la connexion :
Uncaught exception 'Zend_Db_Adapter_Exception' with message 'SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor (/builddir/build/BUILD/php-5.2.6/ext/pdo_oci/oci_driver.c:581)'
sinon voici ma config db :
[general]
db.adapter = Oracle
db.params.host = blabla
db.params.username = blabla
db.params.password = blabla
db.params.dbname = TEST-ORCL
db.params.options.caseFolding = 2
db.params.options.autoQuoteIdentifiers = false
dans mon index.php :
// Chargement de la configuration
$config = new Zend_Config_Ini('./application/config.ini', 'general');
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);
// Mise en place de la BDD
$db = Zend_Db::factory($config->db);
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db);
Hors ligne
Je suis désolé mais je ne sais pas vraiment t'aider, n'ayant jamais expérimenté une BDD Oracle et Zend.
Par contre je lis quelques trucs sur la doc et entre autre :
Actuellement l'option Zend_Db::CASE_FOLDING n'est pas supportée par l'adaptateur Oracle. Pour l'utiliser, vous devez utiliser l'adaptateur basé sur PDO et OCI.
Ce que je peux dire n'a sans doute aucun rapport, je parle un peu sans savoir, donc je vais laisser les autres t'aider.
Pour info :
http://framework.zend.com/manual/fr/zen … tes.oracle
Un exemple de config basique:
[xxxxx] db.adapter = pdo_oci; db.params.host = nomDuServeur db.params.username = xxxxx db.params.password =xxxxx db.params.dbname = nomDeLaBase db.params.options.caseFolding = 2 db.params.options.autoQuoteIdentifiers = 0
A+ benjamin.
Dernière modification par Delprog (17-12-2008 16:33:24)
Hors ligne
Delprog a écrit:
Je suis désolé mais je ne sais pas vraiment t'aider, n'ayant jamais expérimenté une BDD Oracle et Zend.
Par contre je lis quelques trucs sur la doc et entre autre :Actuellement l'option Zend_Db::CASE_FOLDING n'est pas supportée par l'adaptateur Oracle. Pour l'utiliser, vous devez utiliser l'adaptateur basé sur PDO et OCI.
Ce que je peux dire n'a sans doute aucun rapport, je parle un peu sans savoir, donc je vais laisser les autres t'aider.
Pour info :
http://framework.zend.com/manual/fr/zen … tes.oracle
Un exemple de config basique:Code:
[xxxxx] db.adapter = pdo_oci; db.params.host = nomDuServeur db.params.username = xxxxx db.params.password =xxxxx db.params.dbname = nomDeLaBase db.params.options.caseFolding = 2 db.params.options.autoQuoteIdentifiers = 0A+ benjamin.
Figures toi que ca fonctionne maintenant !!!
En fait avec case folding actif, il détecte les noms des champs en minuscule, dont on doit setter la clée en minuscule, mais après il doit la voir en majuscule et trouver les champs différents!
J'avais pris le case folding de ce post... http://www.z-f.fr/forum/viewtopic.php?id=1973
En fait tu as raison je pense qu'il ne faut surtout pas utiliser le case folding avec l'adapter Oracle.
En tout cas merci beaucoup à toi
Hors ligne
Hello,
Désolé de vous avoir quitter dans cette conversation, Oracle ne supporte pas le case folding, c'est pour cela que l'on utilise entre autres le paramètre autoQuoteIdentifier pour s'affranchir de problème de casse. Cependant il est exact que le paramètre a une influence : lors du describeTable() fait en interne à l'instanciation de l'objet table, un foldCase est réalisé sur les noms de colonnes, la casse définie par "db.params.options.caseFolding" doit donc correspondre à celle que tu utilises dans ton code.
Pour pdo_oci, il faut lui mettre le sid de ta base et non le dbname dans le paramètre dbname.
A+
Hors ligne
Pages: 1