Propel 1.3 ya puede inspeccionar Oracle
Gracias a unos cambios en Propel 1.3 en los que he estado currando por necesidad, he podido contribuir al magnífico proyecto Propel y me han hecho comitter en su SVN para temas de Oracle, a pesar de que soy un novato en el área.
A partir de ahora, si necesitáis trabajar contra Oracle con Propel, podréis realizar tareas de ingeniería inversa para generar el modelo a partir de una base de datos viva con los cambios del changeset 1107 de la versión 1.3 de Propel (http://propel.phpdb.org/trac/changeset/1107).
Huelga decir que supone un gran honor para mi el poder realizar esta aportación y que estoy muy contento por ello.
Si encontráis cualquier problema avisad!
Symfony 1.2 + Propel 1.3 + Oracle (Parte 2)
Ahora que ya tenemos el módulo PDO_OCI funcionando, podemos intentar hacer una prueba en Symfony 1.2 con Propel 1.3. Después de dar muchas vueltas, he llegado a la conclusión de que el formato para databases.yml es el siguiente:
all:propel:
class: sfPropelDatabase
param:
classname: PropelPDO
phptype: oracle
dsn: oci:dbname=//%IP_DEL_SERVIDOR%:%PUERTO_DEL_SERVIDOR%/%BASE_DE_DATOS%
username: %USUARIO%
password: %CONTRASEÑA%
encoding: utf8
persistent: true
pooling: true
(No consigo que el maldito WordPress indente correctamente el código anterior así que recuerda que la jerarquía es: all >> propel >> param >> resto)
El formato de propel.ini sería el siguiente:
propel.database = oraclepropel.database.driver = oracle
propel.database.url = oci:
dbname=//%IP_DEL_SERVIDOR%:%PUERTO_DEL_SERVIDOR%/%BASE_DE_DATOS%
propel.database.creole.url = ${propel.database.url}propel.database.user =
%USUARIO%
propel.database.password =%CONTRASEÑA%
propel.database.encoding = utf8
Lo último que necesitas para que la ingeniería inversa funcione es un parseador de estructura de base de datos para bases de datos de Oracle. Propel 1.3 no trae uno, así que puedes usar el que un servidor ha preparado convenientemente: Oracle Schema Parser (PHP5 script) (Bórrale la extensión “doc” y déjalo en un directorio “lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle” nuevo que tienes que crear en la instalación de Symfony).
Con esto y un bizcocho, ya deberías ser capaz de ejecutar la tarea “propel:build-schema” :)
Symfony 1.2 + Propel 1.3 + Oracle
Después de intentar poner el marcha la extensión de PHP5 de PDO_OCI durante dos días, hoy al fin lo he conseguido.
No hay apenas documentación y para más inri, la poca que hay mezcla versiones incompatibles entre si. Ha sido una auténtica aventura ponerlo en marcha.
La configuración del servidor es la siguiente:
- Ubuntu Server 8.10 x86 sobre VMWare
- PHP5 (la versión del repositorio de Ubuntu)
Parte 1: Instalar el driver OCI (oracle) de PDO
Antes de nada debes saber que vas a tener que instalar la extensión PDO y PDO_OCI a mano. Por un lado, la de PDO_OCI no tiene candidatos y si la compilas a mano, resulta que es incompatible con el API de PDO que te instala el repositorio de ubuntu, por lo que al final, la mejor solución es compilar a mano ambas, a partir del repositorio de fuentes de PEAR.
Para instalar PDO solo hay que hacer un “sudo pecl install pdo”. Asegúrate de tener instalado el paquete php-pear y el php5-dev porque si no no podrás hacer esto.
Despues de hacerlo, habrás reemplazado la extensión PDO que te viene al hacer un “apt-get install php5″ por el de PEAR.
Ahora viene la parte divertida: instalar en el sistema la extensión PDO_OCI. Para ello debes instalar dos cositas de nuestro gran amigo Oracle (http://www.oracle.com/technology/software/tech/oci/instantclient/index.html):
- Oracle Instant Client (library)
- Oracle Instant Client (SDK)
Lamentablemente, solo podrás utilizar las versiones inferiores a la 11 (de la 10.2.0.4 para abajo).
Luego descomprime la librería en /usr/lib/oracle/10.2.0.4/client/lib y el sdk en /usr/include/oracle/10.2.0.4/client
Luego dile al sistema que añada estas rutas con el comando ldconfig y corriges un par de nombres de ficheros:
sudo ldconfig /usr/lib/oracle/10.2.0.4/client/lib
sudo ldconfig /usr/include/oracle/10.2.0.4/client
sudo ln -s /usr/lib/oracle/10.2.0.4/client/lib/libclntsh.so.10.1 /usr/lib/oracle/10.2.0.4/client/lib/libclntsh.so
sudo ln -s /usr/lib/oracle/10.2.0.4/client/lib/libocci.so.10.1 /usr/lib/oracle/10.2.0.4/client/lib/libocci.so
Ahora vamos a descargar las fuentes de PDO_OCI, compilarlas e instalarlas en el sistema:
sudo mkdir /usr/src/pdo_oci
cd /usr/src/pdo_oci
sudo pecl download pdo_oci
sudo tar -zxvf PDO_OCI-1.0.tgz
cd PDO_OCI-1.0
sudo phpize5
sudo ./configure –prefix=/usr –with-pdo-oci=/usr/lib/oracle/10.2.0.4/client
* editar Makefile *
sudo make
sudo make install
Al editar Makefile debéis añadir la ruta a /usr/include/oracle/10.2.0.4/client/include en la directiva “INCLUDES”
Después de esto ya tendréis la extensión instalada en vuestro sistema. Sólo hay que editar /etc/php5/conf.d/pdo.ini y añadir:
extension=pdo_oci.so
Ale, a disfrutar! En el siguiente post explicaré como hacer que todo esto funcione con Propel 1.3 y Symfony, pero antes tengo que averiguar cómo coño se hace T_T.
Cambiar la imagen de cabecera
He elegido este tema porque me gusta como queda el recorte de siluetas en negro. Quiero poner algo más friki. A ver si se me ocurre algo chulo y lo pongo.
Creo que, muy probablemente, irá orientado hacia los marcianitos del Space Invaders, aunque aun no lo he decidido.
Presentación
Hola!
Mi nombre es Guillermo y, aunque tenéis más info sobre mi aquí, es costumbre iniciar un Blog con un post de presentación.
Quiero que este blog sea el sumidero de mi coco, la válvula de escape de mi ánimo profesional, el “punchinbol” de mi conciencia o la fuga de mi estrés.
Antes de nada, unas pequeñas aclaraciones:
tribulación.
(Del lat. tribulatĭo, -ōnis).
1. f. Congoja, pena, tormento o aflicción moral.
2. f. Persecución o adversidad que padece el hombre.
informático, ca.
1. adj. Perteneciente o relativo a la informática.
2. adj. Que trabaja o investiga en informática. Apl. a pers., u. t. c. s.
Dicho esto, creo que el título del Blog es correcto en mi caso, ya que la mayoría de artículos tratarán sobre tormentos y congojas relacionadas con mi trabajo de desarrollador.