Propel, Oracle e nomes de tabelas

Nos últimos dias experienciei problemas em utilizar o Symfony com banco de dados Oracle (mais especificamente, em utilizar o Propel com Oracle). O que acontece é que os scripts gerados através do comando propel-build-sql do Symfony, por padrão, ficam da seguinte forma:

CREATE TABLE "estado"
(
"id" NUMBER  NOT NULL,
"nome" VARCHAR2(50),
"sigla" VARCHAR2(2)
);

MySQL e PostgreSQL não apresentaram problemas. Porém, a inserção deste SQL no Oracle força que todas as tabelas e campos sejam criados na forma de caracteres minúsculos.

Ou seja, se você fizer uma consulta diretamente no banco1 da seguinte forma:

SELECT nome FROM estado;

Receberá um erro informando que a tabela não existe! Apenas nesta forma funcionaria:

SELECT "nome" FROM "estado";

Conseqüentemente, todas as consultas efetuadas através dos objetos de mapeamento do banco geradas pelo Propel não funcionarão. A solução foi simples: remover as aspas duplas do arquivo SQL gerado (utilizei a ferramente rpl do linux):

rpl '"' '' data/sql/*

Uma solução não muito adequada, mas resolveu. Até que resolvi consultar a lista symfony-users sobre o problema e um integrante, Charley Tiggs, sugeriu a seguinte configuração no propel.ini:

propel.disableIdentifierQuoting = true

Simples e funcional. Fica a referência para consultas futuras ;-)

1 Sugiro o Oracle SQL Developer, uma ótima ferramenta GUI desenvolvida em Java para acessar bancos em Oracle, MySQL e SQL Server. Sendo uma ferramenta Java, pode ser executada perfeitamente no Linux, como estou utilizando aqui!

This entry was posted on Domingo, Agosto 19th, 2007 at 22:54 and is filed under php, symfony. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

2 Responses to “Propel, Oracle e nomes de tabelas”

  1. Andréia Bohner Says:

    Oi Jony,

    Ótima dica, obrigada por compartilhá-la!

    Passei exatamente pela mesma situação hoje, utilizando o sfGuard com o Oracle. No arquivo SQL gerado além do problema das aspas, a definição dos índices aparecia duplicada e, na primary key, o campo vinha em branco… o jeito foi acertar o SQL manualmente mesmo

  2. Jony dos Santos Kostetzer Says:

    Oi Andréia,

    Realmente, também tive o mesmo problema do índice no sfGuard, mas atualmente estou “ignorando o erro”, visto que ele duplica a linha mas não afeta em nada, só contabiliza uma instrução com falha.
    Um abraço.

Leave a Reply