<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Niano Niano &#187; propel</title>
	<atom:link href="http://www.nianoniano.com/tag/propel/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nianoniano.com</link>
	<description>Cosicas y ocurrencias</description>
	<lastBuildDate>Wed, 05 May 2010 22:14:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Problemas (casi)resueltos de Propel (Symfony) y Oracle</title>
		<link>http://www.nianoniano.com/2009/03/05/problemas-casiresueltos-de-propel-symfony-y-oracle/</link>
		<comments>http://www.nianoniano.com/2009/03/05/problemas-casiresueltos-de-propel-symfony-y-oracle/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 08:34:39 +0000</pubDate>
		<dc:creator>Guille</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://tribulatico.wordpress.com/?p=36</guid>
		<description><![CDATA[Acaban de dejarme un comentario al post: Propel 1.3 ya puede inspeccionar Oracle digno de ser respondido como dios manda. Os pongo el extracto de una serie de preguntas que plantea mppfiles: 1) Los nombres de tablas deben estar sí o sí en mayúsculas 2) Los nombres de los campos DEBEN definirse con minúsculas y/o [...]]]></description>
			<content:encoded><![CDATA[<p>Acaban de dejarme un comentario al post: <a href="http://tribulatico.wordpress.com/2009/02/25/propel-13-ya-puede-inspeccionar-oracle/">Propel 1.3 ya puede inspeccionar Oracle</a> digno de ser respondido como dios manda. Os pongo el extracto de una serie de preguntas que plantea mppfiles:</p>
<blockquote><p>1) Los nombres de tablas deben estar sí o sí en mayúsculas<br />
2) Los nombres de los campos DEBEN definirse con minúsculas y/o sin tildar el “preserve case” en ApEx (o sin encerrar los nombres de los campos entre comillas)<br />
3) En varias ocasiones me han salido errores extraños del tipo: “duplicate table found: propel” y otros mas extraños aun, tuve que borrar los generated-schema*.yml y volver a construir el esquema y el modelo para que camine.<br />
4) Al generar los forms, los nombres de los widgets se ponen en minusculas, lo que genera problemas al guardarlos despues (porque definimos previamente que sean mayusculas)<br />
5) Ahora estoy peleando con los campos de tipo fecha. Al parecer el Oracle que tengo instalado (XE bajo Windows) maneja las fechas en formato “d/m/Y” o dd/MM/YYYY (o equivalentes), en definitiva: fechas en español) y me salen errores del tipo “Unable to execute INSERT statement. [wrapped: SQLSTATE[HY000]: General error: 1861 OCIStmtExecute: ORA-01861: el literal no coincide con la cadena de formato”, pensaba que tenía que ver con el formato ISO de los validators (Y-m-d, o YYYY/MM/DD o como sea), y aunque cambié el valor de<br />
$this-&gt;validatorSchema['FECHA_NAC']-&gt;setOption(’date_output’,'d/m/Y’)<br />
al hacer $form-&gt;getValues() lo muestra con ese formato, pero Propel insiste en guardar el valor en la base con el formato ISO, lo cual me parece mas que bien.</p></blockquote>
<p>Paso a contestar la mayoría de puntos ya que creo que los he resuelto en mayor o menor medida:</p>
<p><strong>1. Nombres de tablas</strong></p>
<p>En Oracle los nombres de tablas se normalizan siempre a un formato en mayúsculas. Me parece una opción igual de válida como cualquier otra, aunque a la hora de programar no suele ser recomendable reproducir esto ya que normalmente se reservan las palabras en mayúsculas para nombres de constantes o, en el caso de PHP, superarrays como _REQUEST, _SERVER, etc.</p>
<p>La manera tradicional de nombrar tablas en bases de datos como MySQL, PostreSQL y demás suele ser la de palabras en minúsculas separadas por guión bajo. Una tabla llamada "<em>user_personal_data</em>" debería mapearse a una clase del estilo <em>UserPersonalData</em> en Propel. El problema es que Propel utiliza un método de la clase <strong>PhpNameGenerator</strong> llamado <strong>phpnameMethod</strong> que no convierte el nombre a minúsuclas antes de capitalizar la primera letra de cada parte del nombre.</p>
<p>En la versión de Propel en la que pude contribuir recientemente he corregido este comportamiento y he creado un nuevo método de nombrado que abarca más a la hora de normalizar nombres extraños de tablas o columnas. De este modo, no solo obtendrás un esquema de base de datos con un formato tipo <em>UserPersonalData</em>, sino que además podrás tolerar nombres de tabla con carácteres extraños.</p>
<p>Sin embargo, me preocupa el tema de las tildes que no había considerado aun. Creo que tendré que hacer una modificación para que los carácteres "á é í ó ú" se traduzcan en "a e i o u" y no desaparezcan sin más.</p>
<p>Si has descargado Symfony a través de su repositorio de Subversion, debes realizar un "<strong>svn up</strong>" en la carpeta "<strong>symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator</strong>" ya que de lo contrario no tendrás la última versión del generador ya que Symfony "bloquea" las librerías de Propel en una versión anterior a mi contribución.</p>
<p><strong>2. Nombres de campos</strong></p>
<p>Esto está resuelto del mismo modo que con el nombre de las tablas del que hablo en el punto anterior.</p>
<p>Yo trabajo contra una base de datos de un ERP Baan IVc4 que utiliza como nombre de columnas cosas como "<em>T$ORNO</em>" o "<em>S$NAMA$RE</em>". Con una versión de Propel actualizada no tendrás ningún problema en generar el schema.yml en semejante escenario. Estos nombres se traducirían como "<em>TOrno</em>" y "<em>SNamaRe</em>".</p>
<p>Sin embargo, el modelo generado a partir del schema.yml anterior no funcionará a no ser que lo edites manualmente ya que en las clases generadas creará incorrectamente el código fuente de las constantes de clase y algún que otro método. En los Peer generará, por ejemplo:</p>
<blockquote><p><code>const T$ORNO = "T$ORNO";</code></p></blockquote>
<p>Y esto falla.</p>
<p>Yo lo he resuelto realizando modificaciones a otras clases de Propel. Estas modificaciones no las he subido al repositorio de Propel porque creo que exigen un pequeño debate y aprobación por parte del grupo de desarrolladores de Propel ya que son bastante intrusivas y pueden afectar a modelos generados a partir de otros motores de bases de datos.</p>
<p>Básicamente, lo que he hecho es decirle al generador de modelos que emplee para todo el "phpName" y no el "name" de las columnas. Esto soluciona el problema por completo. Puedo enviarle un diff de los cambios que he hecho en estas clases a quien me lo pida para que pueda aplicar los cambios en su instalación de Propel.</p>
<p><strong>3. Duplicate table found: propel</strong></p>
<p>Esto es un error frecuente en Symfony cuando trabajas con varias bases de datos al mismo tiempo. En el fichero databases.yml tendrás una configuración parecida a esta:</p>
<blockquote><p><code>all:<br />
db1:<br />
configuración de db1<br />
db2:<br />
configuración de db2<br />
...</code></p></blockquote>
<p>(Disculpad la maldita indentación de Worpdress)</p>
<p>El problema es que Symfony no respeta el nombre de la base de datos a la hora de generar el fichero schema.yml y utiliza el nombre "propel" para los esquemas siempre. Lo único que hay que hacer es asegurarse de que la primera posición del fichero schema.yml coincide con db1, db2, etc. antes de generar el modelo y luego todo funcionará de maravilla.</p>
<p>Si os devuelve este error a pesar de haber hecho lo anterior, lo más seguro es que tengáis un problema de cache. En este caso, recomiendo borrar el fichero schema.yml y el directorio lib/model (haz copia de seguridad de esto antes de borrarlo por si las moscas) y empezar de nuevo.</p>
<p><strong>4.Forms</strong></p>
<p>Creo que esto se resuelve con las medidas que he tomado con los nombres de tablas y columnas. En cualquier caso, a mi no me ocurre en mi escenario.</p>
<p><strong>5. Fechas</strong></p>
<p>Lamentablemente, todavía no me he peleado suficiente con esto como para darte una resupesta. Seguramente tú sepas más de esto que yo en este momento. Sólo te puedo recomendar optar siempre que se pueda por Timestamps en la base de datos.</p>
<p>En cualquier caso, hice una corrección en este sentido en el motor de ingeniería inversa que ganantiza que Propel no la cagará (como nos tiene acostumbrados) con los valores por defecto en los campos fecha.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte este post:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F03%2F05%2Fproblemas-casiresueltos-de-propel-symfony-y-oracle%2F&amp;partner=sociable" title="Print"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F03%2F05%2Fproblemas-casiresueltos-de-propel-symfony-y-oracle%2F&amp;title=Problemas%20%28casi%29resueltos%20de%20Propel%20%28Symfony%29%20y%20Oracle&amp;notes=Acaban%20de%20dejarme%20un%20comentario%20al%20post%3A%20Propel%201.3%20ya%20puede%20inspeccionar%20Oracle%20digno%20de%20ser%20respondido%20como%20dios%20manda.%20Os%20pongo%20el%20extracto%20de%20una%20serie%20de%20preguntas%20que%20plantea%20mppfiles%3A%0A1%29%20Los%20nombres%20de%20tablas%20deben%20estar%20s%C3%AD%20o%20s%C3%AD%20en%20may%C3%BAscul" title="del.icio.us"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F03%2F05%2Fproblemas-casiresueltos-de-propel-symfony-y-oracle%2F&amp;t=Problemas%20%28casi%29resueltos%20de%20Propel%20%28Symfony%29%20y%20Oracle" title="Facebook"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nianoniano.com/2009/03/05/problemas-casiresueltos-de-propel-symfony-y-oracle/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Propel 1.3 ya puede inspeccionar Oracle</title>
		<link>http://www.nianoniano.com/2009/02/25/propel-13-ya-puede-inspeccionar-oracle/</link>
		<comments>http://www.nianoniano.com/2009/02/25/propel-13-ya-puede-inspeccionar-oracle/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 14:42:25 +0000</pubDate>
		<dc:creator>Guille</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[reverse]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://tribulatico.wordpress.com/?p=33</guid>
		<description><![CDATA[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, [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>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).</p>
<p>Huelga decir que supone un gran honor para mi el poder realizar esta aportación y que estoy muy contento por ello.</p>
<p>Si encontráis cualquier problema avisad!</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte este post:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F25%2Fpropel-13-ya-puede-inspeccionar-oracle%2F&amp;partner=sociable" title="Print"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F25%2Fpropel-13-ya-puede-inspeccionar-oracle%2F&amp;title=Propel%201.3%20ya%20puede%20inspeccionar%20Oracle&amp;notes=Gracias%20a%20unos%20cambios%20en%20Propel%201.3%20en%20los%20que%20he%20estado%20currando%20por%20necesidad%2C%20he%20podido%20contribuir%20al%20magn%C3%ADfico%20proyecto%20Propel%20y%20me%20han%20hecho%20comitter%20en%20su%20SVN%20para%20temas%20de%20Oracle%2C%20a%20pesar%20de%20que%20soy%20un%20novato%20en%20el%20%C3%A1rea.%0A%0AA%20partir%20de%20ahora%2C" title="del.icio.us"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F25%2Fpropel-13-ya-puede-inspeccionar-oracle%2F&amp;t=Propel%201.3%20ya%20puede%20inspeccionar%20Oracle" title="Facebook"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nianoniano.com/2009/02/25/propel-13-ya-puede-inspeccionar-oracle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Symfony 1.2 + Propel 1.3 + Oracle (Parte 2)</title>
		<link>http://www.nianoniano.com/2009/02/17/symfonypropel13oracle%e2%80%a6-%c2%bfporque-tanto-odio-parte-2/</link>
		<comments>http://www.nianoniano.com/2009/02/17/symfonypropel13oracle%e2%80%a6-%c2%bfporque-tanto-odio-parte-2/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 15:47:01 +0000</pubDate>
		<dc:creator>Guille</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[reverse]]></category>
		<category><![CDATA[schema]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://tribulatico.wordpress.com/?p=18</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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:</p>
<blockquote><p><code>all:</code></p>
<p>propel:</p>
<p>class: sfPropelDatabase</p>
<p>param:</p>
<p>classname: PropelPDO</p>
<p>phptype: oracle</p>
<p>dsn: oci:dbname=//%IP_DEL_SERVIDOR%:%PUERTO_DEL_SERVIDOR%/%BASE_DE_DATOS%</p>
<p>username: %USUARIO%</p>
<p>password: %CONTRASEÑA%</p>
<p>encoding: utf8</p>
<p>persistent: true</p>
<p>pooling: true</p></blockquote>
<p>(No consigo que el maldito WordPress indente correctamente el código anterior así que recuerda que la jerarquía es: all &gt;&gt; propel &gt;&gt; param &gt;&gt; resto)</p>
<p>El formato de propel.ini sería el siguiente:</p>
<blockquote><p><code>propel.database            = oracle</code></p>
<p>propel.database.driver     = oracle</p>
<p>propel.database.url        = oci:<code>dbname=//%IP_DEL_SERVIDOR%:%PUERTO_DEL_SERVIDOR%/%BASE_DE_DATOS%</code></p>
<p><code> propel.database.creole.url = ${propel.database.url}</code></p>
<p>propel.database.user       = <code>%USUARIO%</code></p>
<p><code> propel.database.password   = </code><code>%CONTRASEÑA%</code></p>
<p><code> propel.database.encoding   = utf8</code></p></blockquote>
<p>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: <a href="http://tribulatico.wordpress.com/2009/02/25/propel-13-ya-puede-inspeccionar-oracle/">Oracle Schema Parser (PHP5 script)</a> (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).</p>
<p>Con esto y un bizcocho, ya deberías ser capaz de ejecutar la tarea "propel:build-schema" :)</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte este post:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F17%2Fsymfonypropel13oracle%25e2%2580%25a6-%25c2%25bfporque-tanto-odio-parte-2%2F&amp;partner=sociable" title="Print"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F17%2Fsymfonypropel13oracle%25e2%2580%25a6-%25c2%25bfporque-tanto-odio-parte-2%2F&amp;title=Symfony%201.2%20%2B%20Propel%201.3%20%2B%20Oracle%20%28Parte%202%29&amp;notes=Ahora%20que%20ya%20tenemos%20el%20m%C3%B3dulo%20PDO_OCI%20funcionando%2C%20podemos%20intentar%20hacer%20una%20prueba%20en%20Symfony%201.2%20con%20Propel%201.3.%20Despu%C3%A9s%20de%20dar%20muchas%20vueltas%2C%20he%20llegado%20a%20la%20conclusi%C3%B3n%20de%20que%20el%20formato%20para%20databases.yml%20es%20el%20siguiente%3A%0Aall%3A%0A%0Apropel%3A%0A%0Acla" title="del.icio.us"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F17%2Fsymfonypropel13oracle%25e2%2580%25a6-%25c2%25bfporque-tanto-odio-parte-2%2F&amp;t=Symfony%201.2%20%2B%20Propel%201.3%20%2B%20Oracle%20%28Parte%202%29" title="Facebook"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nianoniano.com/2009/02/17/symfonypropel13oracle%e2%80%a6-%c2%bfporque-tanto-odio-parte-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Symfony 1.2 + Propel 1.3 + Oracle</title>
		<link>http://www.nianoniano.com/2009/02/16/symfonypropel13oracle-%c2%bfporque-tanto-odio/</link>
		<comments>http://www.nianoniano.com/2009/02/16/symfonypropel13oracle-%c2%bfporque-tanto-odio/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 11:41:20 +0000</pubDate>
		<dc:creator>Guille</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[pdo_oci]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tribulatico.wordpress.com/?p=12</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>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.</p>
<p>La configuración del servidor es la siguiente:</p>
<ul>
<li>Ubuntu Server 8.10 x86 sobre VMWare</li>
<li>PHP5 (la versión del repositorio de Ubuntu)</li>
</ul>
<h2>Parte 1: Instalar el driver OCI (oracle) de PDO</h2>
<p>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.</p>
<p>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.</p>
<p>Despues de hacerlo, habrás reemplazado la extensión PDO que te viene al hacer un "apt-get install php5" por el de PEAR.</p>
<p>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):</p>
<ul>
<li>Oracle Instant Client (library)</li>
<li>Oracle Instant Client (SDK)</li>
</ul>
<p>Lamentablemente, solo podrás utilizar las versiones inferiores a la 11 (de la 10.2.0.4 para abajo).</p>
<p>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</p>
<p>Luego dile al sistema que añada estas rutas con el comando ldconfig y corriges un par de nombres de ficheros:</p>
<blockquote><p>sudo ldconfig /usr/lib/oracle/10.2.0.4/client/lib<br />
sudo ldconfig /usr/include/oracle/10.2.0.4/client<br />
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<br />
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</p></blockquote>
<p>Ahora vamos a descargar las fuentes de PDO_OCI, compilarlas e instalarlas en el sistema:</p>
<blockquote><p>sudo mkdir /usr/src/pdo_oci<br />
cd /usr/src/pdo_oci<br />
sudo pecl download pdo_oci<br />
sudo tar -zxvf PDO_OCI-1.0.tgz<br />
cd PDO_OCI-1.0<br />
sudo phpize5<br />
sudo ./configure --prefix=/usr --with-pdo-oci=/usr/lib/oracle/10.2.0.4/client<br />
* editar Makefile *<br />
sudo make<br />
sudo make install</p></blockquote>
<p>Al editar Makefile debéis añadir la ruta a /usr/include/oracle/10.2.0.4/client/include en la directiva "INCLUDES"</p>
<p>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:</p>
<blockquote><p>extension=pdo_oci.so</p></blockquote>
<p>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.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte este post:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F16%2Fsymfonypropel13oracle-%25c2%25bfporque-tanto-odio%2F&amp;partner=sociable" title="Print"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F16%2Fsymfonypropel13oracle-%25c2%25bfporque-tanto-odio%2F&amp;title=Symfony%201.2%20%2B%20Propel%201.3%20%2B%20Oracle&amp;notes=Despu%C3%A9s%20de%20intentar%20poner%20el%20marcha%20la%20extensi%C3%B3n%20de%20PHP5%20de%20PDO_OCI%20durante%20dos%20d%C3%ADas%2C%20hoy%20al%20fin%20lo%20he%20conseguido.%0A%0ANo%20hay%20apenas%20documentaci%C3%B3n%20y%20para%20m%C3%A1s%20inri%2C%20la%20poca%20que%20hay%20mezcla%20versiones%20incompatibles%20entre%20si.%20Ha%20sido%20una%20aut%C3%A9ntica%20aven" title="del.icio.us"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.nianoniano.com%2F2009%2F02%2F16%2Fsymfonypropel13oracle-%25c2%25bfporque-tanto-odio%2F&amp;t=Symfony%201.2%20%2B%20Propel%201.3%20%2B%20Oracle" title="Facebook"><img src="http://www.nianoniano.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nianoniano.com/2009/02/16/symfonypropel13oracle-%c2%bfporque-tanto-odio/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
