articles. tech. automation.

Quoting no DBIx::Class

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.

Avatar de jorge.senger

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Jorge A. Senger

Software architect
Red Hat Certified Engineer
AWS Certified Architect
IBM Cloud Certified Architect