Conexión con Base de Datos Oracle

1,105 views
Skip to first unread message

Oscar López

unread,
Apr 5, 2010, 8:58:58 AM4/5/10
to symfo...@googlegroups.com
No consigo realizar una conexión a BBDD Oracle desde Symfony. Tengo Windows XP con WAMP y ya he habilitado los drivers pdo_oci, de hecho, el siguiente archivo me funciona correctamente;

<?php
try {
    $dbh = new PDO("oci:dbname=mi_bbdd;host=mi_host;port=1521","mi_usuario","mi_pass");
} catch (PDOException $e) {
    echo "Error: ". $e->getMessage();
    exit;
}
$query = "SELECT * FROM mi_tabla";

$stmt = $dbh->prepare($query);

if ($stmt->execute()) {
    while ($row = $stmt->fetch()) {
        echo $row['mi_campo']."<br />";
    }

?>

En Symfony, sin embargo, me resulta imposible. En mi archivo databases.yml tengo lo siguiente:

all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      oci:dbname=mi_bbdd;host=mi_host;port=1521
      username: mi_usuario
      password: mi_pass

Ejecuto la tarea doctrine: build --all para que se me creen las tablas de sfDoctrineGuardPlugin y me da el siguiente error:

Couldn't locate driver named oci 

¿Alguna idea?

Marcos De Andrade

unread,
Apr 5, 2010, 9:10:09 AM4/5/10
to symfo...@googlegroups.com
yo hago la conexión de esta forma la unica que encontre espero te ayude


oracle:
    class: sfDoctrineDatabase
    param:    
      dsn:       oracle://usuario:pas...@127.0.0.1/ (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1 )(PORT=1521)))(CONNECT_DATA=(SID=BD1)))

Oscar López

unread,
Apr 5, 2010, 9:21:28 AM4/5/10
to symfo...@googlegroups.com
Gracias por tu respuesta, pero la verdad es que eso ya lo probé y tampoco me funciona. Si intento utilizar el driver oracle me arroja un error de este tipo:

PHP Notice:  Use of undefined constant OCI_COMMIT_ON_SUCCESS - assumed 'OCI_COMMIT_ON_SUCCESS' in C:\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connection.php on line 484

De todas formas el driver oci me conecta bien en un script php normal, así que no entiendo por qué no me funciona, y en la documentación de Doctrine no encuentro nada que me sirva.

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.

Moises Burgos

unread,
Apr 5, 2010, 3:06:57 PM4/5/10
to symfo...@googlegroups.com
Oscar, yo tuve un problema con la linea de comandos pero cuando
intentaba hacerlo con MySQL, quizás lo que me sirvió a mi también te
pueda servir a ti, yo modifiqué el php-cli.ini y alli agregué
extension=php_pdo_mysql.dll, imagino que para tu caso sería
extension=php_pdo_oci.dll espero que te ayude a resolver el problema,
avisa si funciona

Saludos...

Oscar López

unread,
Apr 5, 2010, 4:53:02 PM4/5/10
to symfo...@googlegroups.com
En el php.ini tengo habilitada la extensión php_pdo_oci.dll, de hecho, como ya he comentado, sí que consigo acceder a la base de datos mediante un script php, pero es cuando utilizo la tarea de Doctrine cuando no lo consigo. De todas formas no sé si te he entendido bien, porque no sé a qué te refieres con el php_cli.ini. Gracias de todas formas.

El 5 de abril de 2010 21:06, Moises Burgos <mdbu...@gmail.com> escribió:
Oscar, yo tuve un problema con la linea de comandos pero cuando intentaba hacerlo con MySQL, quizás lo que me sirvió a mi también te pueda servir a ti, yo modifiqué el php-cli.ini y alli agregué extension=php_pdo_mysql.dll, imagino que para tu caso sería extension=php_pdo_oci.dll espero que te ayude a resolver el problema, avisa si funciona

Saludos...





El 05/04/2010, a las 08:58 a.m., Oscar López escribió:

No consigo realizar una conexión a BBDD Oracle desde Symfony. Tengo Windows XP con WAMP y ya he habilitado los drivers pdo_oci, de hecho, el siguiente archivo me funciona correctamente;

<?php
try {
   $dbh = new PDO("oci:dbname=mi_bbdd;host=mi_host;port=1521","mi_usuario","mi_pass");

} catch (PDOException $e) {
   echo "Error: ". $e->getMessage();
   exit;
}
$query = "SELECT * FROM mi_tabla";

$stmt = $dbh->prepare($query);

if ($stmt->execute()) {
   while ($row = $stmt->fetch()) {
       echo $row['mi_campo']."<br />";
   }
}
?>

En Symfony, sin embargo, me resulta imposible. En mi archivo databases.yml tengo lo siguiente:

all:
 doctrine:
   class: sfDoctrineDatabase
   param:
     dsn:      oci:dbname=mi_bbdd;host=mi_host;port=1521
     username: mi_usuario
     password: mi_pass

Ejecuto la tarea doctrine: build --all para que se me creen las tablas de sfDoctrineGuardPlugin y me da el siguiente error:

Couldn't locate driver named oci

¿Alguna idea?

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.

Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.

Moises Burgos

unread,
Apr 5, 2010, 4:46:22 PM4/5/10
to symfo...@googlegroups.com
Oscar, el php-cli.ini es como el php.ini, pero utilizado para las operaciones en la linea de comando, busca en el directorio donde tienes el php.ini a ver si tambien tienes el php-cli.ini (es en este donde debes colocar lo que te digo)

Saludos...

Moises Burgos

unread,
Apr 5, 2010, 4:59:21 PM4/5/10
to symfo...@googlegroups.com
Claro, yo estoy trabajando con Uniform Server, no se si existe ese archivo o uno equivalente en WAMP, seria cuestion de que googlees un poco a ver que tal

Saludos...


El 05/04/2010, a las 04:53 p.m., Oscar López escribió:

Oscar López

unread,
Apr 5, 2010, 6:17:37 PM4/5/10
to symfo...@googlegroups.com
No, en WAMP no hay eso.

Moises Rangel

unread,
Apr 5, 2010, 6:25:12 PM4/5/10
to symfo...@googlegroups.com
Me suena a que el buen Moisés Burgos (saludos tocayo!) tiene razón:

PHP tiene dos .ini dentro de windows, uno dedicado para el uso de PHP en línea de comando, que es el que usas cuando ejecutas la tarea:

php symfony doctrine: build --all

apuesto a tienes desactivada la DLL de oracle en ese .ini. =)
____________________
Moisés Rangel Narváez

Marcos Rozicki

unread,
Oct 23, 2013, 8:49:44 AM10/23/13
to symfo...@googlegroups.com
Yo simplemente hice igual que en sql pero tengo instalado el OCI8 en mi ordenador.

archivo: app/config/parameters.yml


 database_driver: oci8
    database_host: server
    database_port: '1521'
    database_name: dbname
    database_user: user
    database_password: pass

Con esto me funciona re bien
Reply all
Reply to author
Forward
0 new messages