2010-11-21 27 views
1

J'ai une base de données dans Postgresql 9.0 et j'essaie d'utiliser Doctrine ORM 1.2 pour générer des modèles à partir de DB.Doctrine et Postgresql, Générer des modèles à partir de DB Problème

Voici mon code:

<?php 
require_once 'Doctrine.php'; 
spl_autoload_register(array('Doctrine', 'autoload')); 
spl_autoload_register(array('Doctrine_Core', 'modelsAutoload')); 
$manager = Doctrine_Manager::getInstance(); 
$conn = Doctrine_Manager::connection('pgsql://postgres:[email protected]/erp','doctrine'); 
$conn->setAttribute(Doctrine_Core::ATTR_PORTABILITY, Doctrine_Core::PORTABILITY_FIX_CASE | PORTABILITY_RTM); 
$conn->setAttribute(Doctrine_Core::ATTR_QUOTE_IDENTIFIER, true); 
$manager->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true); 
Doctrine_Core::loadModels('../application/models'); 
Doctrine_Core::generateModelsFromDb('../application/models', array('doctrine'), array('generateTableClasses' => true)); 
?> 

et quand je lance la page, je reçois cette erreur:

Fatal error: Uncaught exception 'Doctrine_Connection_Pgsql_Exception' with message 'SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "t" LINE 6: ... t.typtype ... ^. Failing Query: "SELECT ordinal_position as attnum, column_name as field, udt_name as type, data_type as complete_type, t.typtype AS typtype, is_nullable as isnotnull, column_default as default, (SELECT 't' in D:\Doctrine-1.2.3\Doctrine-1.2.3\Doctrine\Connection.php on line 1082 

Il vaut la peine de mentionner, ce code fonctionne parfaitement pour MySQL (en ayant mysql: // ... dans la connexion decurse), mais j'ai du mal à le faire fonctionner avec postgresql 9.0.

Une idée?

Répondre

1

Sons comme ce bogue dans Doctrine: http://www.doctrine-project.org/jira/browse/DC-919

+0

yeppy il y avait une faute de frappe dans le fichier source !!! et je suis étonné que j'ai téléchargé la source du SVN et que la faute de frappe existe toujours! Je me suis retiré moi-même! mais thx de toute façon – Pooria

0

Essayez d'ajouter des guillemets pour le nom de la table ou les noms de colonnes.

Trouver la bonne dénomination lors de l'exportation d'une table.

Mon problème était que quelqu'un a ajouté des citations au nom de la table.

$sql='SELECT "id","name", 
    ("f1"=\'aaa\' OR 
    "f1"=\'bbb\') AS "myflag" 
    FROM "mytable"';