Foros del Web » Programando para Internet » PHP » CodeIgniter »

problemas con driver de postgres en codeigniter and doctrine

Estas en el tema de problemas con driver de postgres en codeigniter and doctrine en el foro de CodeIgniter en Foros del Web. Hola, se que ya hize un post parecedido a esto pero no logro comprender el porque me sale este error. Tengo un proyecto que funciona ...
  #1 (permalink)  
Antiguo 01/02/2011, 14:05
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 15 años
Puntos: 4
problemas con driver de postgres en codeigniter and doctrine

Hola, se que ya hize un post parecedido a esto pero no logro comprender el porque me sale este error.
Tengo un proyecto que funciona con postgres y mysql con logre hacerlo con la ayuda de masterpuppet , ya he logrado que funcione una consulta y una insercion con ambos gestores sin problemas. Ahora que lo quiero aplicar a mi proyecto tengo este error:
Código PHP:
Ver original
  1. A PHP Error was encountered
  2.  
  3. Severity: Warning
  4.  
  5. Message: require_once(/var/www/proyect/system/database/drivers/pgsql/pgsql_driver.php): failed to open stream: No such file or directory
  6.  
  7. Filename: database/DB.php
  8.  
  9. Line Number: 129
  10.  
  11. Fatal error: require_once(): Failed opening required '/var/www/proyect/system/database/drivers/pgsql/pgsql_driver.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/proyect/system/database/DB.php on line 129

Lo que entiendo es que no lee el driver porque lo busca en database->drivers-pgsql->pgsql_driver.php.

Y eso no existe ademas en el proyecto que me funciona el nombre de los archivos es igual a este proyecto pero aun asi intente cambiando el nombre a los directorios y al archivo y aparece otro error.

El archivo database.php que esta dentro de config es este:
Código PHP:
Ver original
  1. $active_group = "default";
  2. $active_record = TRUE;
  3.  
  4. $db['default']['hostname'] = "localhost";
  5. $db['default']['username'] = "postgres";
  6. $db['default']['password'] = "copia";
  7. $db['default']['database'] = "hotel";
  8. $db['default']['dbdriver'] = "pgsql";
  9. $db['default']['dbprefix'] = "";
  10. $db['default']['pconnect'] = TRUE;
  11. $db['default']['db_debug'] = TRUE;
  12. $db['default']['cache_on'] = FALSE;
  13. $db['default']['cachedir'] = "";
  14. $db['default']['dsn'] = $db['default']['dbdriver'] .
  15.                         '://' . $db['default']['username'] .
  16.                         ':' . $db['default']['password'].
  17.                         '@' . $db['default']['hostname'] .
  18.                         '/' . $db['default']['database'];
  19. $db['default']['char_set'] = "utf8";
  20. $db['default']['dbcollat'] = "utf8_general_ci";
  21. // Require Doctrine.php
  22. require_once(realpath(dirname(__FILE__) . '/../..') . DIRECTORY_SEPARATOR . 'database/doctrine/Doctrine.php');
  23.  
  24. // Set the autoloader
  25. spl_autoload_register(array('Doctrine', 'autoload'));
  26.  
  27. // Load the Doctrine connection
  28. $conn = Doctrine_Manager::connection($db['default']['dsn'], $db['default']['database']);
  29.  
  30. // Load the models for the autoloader
  31. $paths = array(
  32.     realpath(dirname(__FILE__) . '/..') . DIRECTORY_SEPARATOR . 'models/generated',
  33.     realpath(dirname(__FILE__) . '/..') . DIRECTORY_SEPARATOR . 'models'
  34. );
  35. Doctrine::loadModels($paths);
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #2 (permalink)  
Antiguo 01/02/2011, 14:34
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años, 1 mes
Puntos: 890
Respuesta: problemas con driver de postgres en codeigniter and doctrine

Supongo que no estas usando la clase AR propia de CI. verdad..?
muestra la consulta.
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 01/02/2011, 14:46
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas con driver de postgres en codeigniter and doctrine

El problema esta seguramente en la configuracíon, para Doctrine el driver es pgsql y para CI es postgre, si queres utilizar los dos, deberias agregar al array de $db la configuración para CI, podrias probar con algo asi:

Código PHP:
Ver original
  1. ...
  2. $db['default']['hostname'] = "localhost";
  3. $db['default']['username'] = "postgres";
  4. $db['default']['password'] = "copia";
  5. $db['default']['database'] = "hotel";
  6. $db['default']['dbdriver'] = "postgre";
  7.  
  8. $db['doctrine']['hostname'] = $db['default']['hostname'];
  9. $db['doctrine']['username'] = $db['default']['username'];
  10. $db['doctrine']['password'] = $db['default']['password'];
  11. $db['doctrine']['database'] = $db['default']['database'];
  12. $db['doctrine']['dbdriver'] = "pgsql";
  13.  
  14. $db['default']['dbprefix'] = "";
  15. $db['default']['pconnect'] = TRUE;
  16. $db['default']['db_debug'] = TRUE;
  17. $db['default']['cache_on'] = FALSE;
  18. $db['default']['cachedir'] = "";
  19. $db['doctrine']['dsn'] = $db['doctrine']['dbdriver'] .
  20.            '://' . $db['doctrine']['username'] .
  21.            ':' . $db['doctrine']['password'].
  22.            '@' . $db['doctrine']['hostname'] .
  23.            '/' . $db['doctrine']['database'];
  24. $db['default']['char_set'] = "utf8";
  25. $db['default']['dbcollat'] = "utf8_general_ci";
  26. // Require Doctrine.php
  27. require_once(realpath(dirname(__FILE__) . '/../..') . DIRECTORY_SEPARATOR . 'database/doctrine/Doctrine.php');
  28.  
  29. // Set the autoloader
  30. spl_autoload_register(array('Doctrine', 'autoload'));
  31.  
  32. // Load the Doctrine connection
  33. $conn = Doctrine_Manager::connection($db['doctrine']['dsn'], $db['doctrine']['database']);
  34. ...

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 02/02/2011, 13:19
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 15 años
Puntos: 4
Respuesta: problemas con driver de postgres en codeigniter and doctrine

Gracias por sus respuestas, probe tu sugerencia masterp y no me funciona.
Ahora me di cuenta que el error se genera porque puse a Database como autoload, al quitarlo el error se va.
archivo application->config->autoload.php

$autoload['libraries'] = array('session','database');

Ya lo quiter.

Ahora bien con DQL hize esta consulta:
Código SQL:
Ver original
  1. public FUNCTION perfilUser($usuario) {
  2.        
  3.         $q = Doctrine_Query::CREATE()
  4.             ->SELECT('p.idPerfil As idPerfil')
  5.             ->FROM('users u, perfil p')
  6.             ->WHERE("(u.username = \"$usuario\") and (u.id = p.users_id)");
  7.  
  8.         //echo $q->getSqlQuery();
  9.         $result = $q->EXECUTE();
  10.        
  11.         /*foreach($result as $rs){
  12.             $data = $rs->idPerfil;
  13.         }*/
  14.         //RETURN $result;
  15.         echo "<pre>";
  16.         print_r($result);
  17.     }
Al provar con mysql corre bien pero con postgres no es asi y me muestra este error:
Código PHP:
Ver original
  1. Fatal error: Uncaught exception 'Doctrine_Connection_Pgsql_Exception' with message 'SQLSTATE[42703]: Undefined column: 7 ERROR: column "jorge" does not exist LINE 1: ...S p__0 FROM users u, perfil p WHERE (u.username = "jorge" AN... ^. Failing Query: "SELECT p.idperfil AS p__0 FROM users u, perfil p WHERE (u.username = "jorge" AND u.id = p.users_id)"' in /var/www/proyect/system/database/doctrine/Doctrine/Connection.php:1082 Stack trace: #0 /var/www/proyect/system/database/doctrine/Doctrine/Connection.php(1025): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Pgsql), 'SELECT p.idperf...') #1 /var/www/proyect/system/database/doctrine/Doctrine/Query/Abstract.php(976): Doctrine_Connection->execute('SELECT p.idperf...', Array) #2 /var/www/proyect/system/database/doctrine/Doctrine/Query/Abstract.php(1026): Doctrine_Query_Abstract->_execute(Array) #3 /var/www/proyect/application/models/Users.php(14): Doctrine_Query_Abstract->exec in /var/www/proyect/system/database/doctrine/Doctrine/Connection.php on line 108
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #5 (permalink)  
Antiguo 02/02/2011, 13:35
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: problemas con driver de postgres en codeigniter and doctrine

Ese DQL funciona ?, debería ser algo asi:

Código PHP:
Ver original
  1. public function getProfileIdByUsername($username)
  2. {
  3.     $q = Doctrine_Query::create()
  4.         ->select('p.idPerfil')
  5.         ->from('Users u')
  6.         ->innerJoin('u.Perfil p')
  7.         ->where('u.username = ?', $username);
  8.    return $q->execute();
  9. }
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 02/02/2011, 13:59
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 15 años
Puntos: 4
Respuesta: problemas con driver de postgres en codeigniter and doctrine

Tenias razon, mi DQL estaba recontra mal jaja pero con el consejo lo arregle y ya me funciona.
Gracias.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com

Etiquetas: doctrine, driver, postgresql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:24.