Em uma das minhas aplicações em Catalyst, precisei adicionar a base de dados do jabberd2 ao meu modelo. Nesta base algumas tabelas possuem nomes separados por traços, o que gerava erros nas queries.
A solução foi definir os caracteres de quoting na configuração de meu modelo, que ficou assim:
package myapp::Model::JB;
use strict;
use base ‘Catalyst::Model::DBIC::Schema’;__PACKAGE__->config(
schema_class => ‘myapp::Schema’,
connect_info => [
myapp->config->{DBIxProdJabber}{dsn},
myapp->config->{DBIxProdJabber}{username},
myapp->config->{DBIxProdJabber}{password},
{
‘mysql_enable_utf8’ => 1 ,
‘on_connect_do’ => [ ‘set names utf8’ ],
‘quote_char’ => ‘`’,
‘name_sep’ => ‘.’,
},
],
);
O atributo “quote_char” define o caractere utilizado para isolar os nomes de tabelas e colunas nas queries e o atributo “name_sep” é o caractere utilizado para separar o alias da tabela do nome da coluna em uma query, como por exemplo: “clientes.nome”.
Cada banco de dados possui uma sintaxe específica para este tipo de situação. Este exemplo é baseado no MySQL.
Deixe um comentário