Pentaho: ERROR_0012 – AdhocWebService.ERROR_0012 – Failed to generate the report preview. Please check the server log for details of the error

Antes de tudo, uma menção honrosa neste post. Já havia escrito uns seis parágrafos, e saí um minuto da minha cadeira, minha cadela (não sei como) conseguiu apagar todo o conteúdo e ainda por cima tornar impossível a recuperação. Depois desta, como impor qualquer limite à capacidade do ser humano em fazer cagadas enquanto usuário? 🙂

Então, voltemos: estou trabalhando numa monografia que visa implantar um modelo de armazém de dados “em miniatura”, mas que demonstre o funcionamento e capacidade de ferramentas livres para a inteligência de negócio (BI). Para isto, estou usando a suíte Pentaho Community.

Trata-se de uma suíte muito poderosa, inteiramente baseada em Java. Entretanto, devido à sua complexidade (trata-se, na verdade, de um conjunto de várias aplicações, modulares, que conversam entre si), tem por característica notável ser muito sensível a erros e falhas. Nesta semana, participei de uma Oficina de Pentaho na Latinoware, em que curiosamente houve um grande atraso no início, porque um relatório não era gerado devido à incompatibilidade da versão do java instalada. O mais engraçado é o fato de que este problema provavelmente tenha sido muito mais didático que a própria oficina em si, uma vez que passamos por logs, testes e outros ajustes até fazer a coisa funcionar.

Então, uma boa prática ao usar o Pentaho é sempre tomar muito cuidado com a versão das aplicações usadas, verificar eventuais incompatibilidades conhecidas e testar qualquer pequena mudança feita, como a instalação de um plugin. Ontem, estava fazendo um relatório de teste baseado no livro “Pentaho na Prática”, um dos pouquíssimos materiais existentes a respeito em português, e lidei com um erro que não tinha solução disponível nos fóruns. Acabei tendo que resolver “na marra”. Portanto, considero importante colocar aqui como resolvi, e relatar minha experiência para que outros aprendam e resolvam eventuais problemas de maneiras mais fácil. Não deixa de ser uma valiosa dica.

Parte 1: o problema

Preciso ainda sistematizar um pouco isto, porque seria muito bom juntar um print da tela. Mas meu problema, basicamente, foi o seguinte: após pegar um relatório BEM simples da introdução do livro, o relatório não era gerado, e aparecia o seguinte erro: ERROR_0012 – AdhocWebService.ERROR_0012 – Failed to generate the report preview. Please check the server log for details of the error. E aí, como resolver?

Parte 2: decompondo o problema

A parte mais importante, em especial para usuários iniciantes, é aprender a lidar com logs do sistema. Eu, quando comecei a programar, tinha a péssima mania de não ler com calma e acabava perdendo muito tempo com isto. Só que no Pentaho temos um monte de arquivos de log, e é preciso também alguma experiência para saber onde correr atrás da informação correta. Repare que a mensagem diz “please check de server log”. Ou seja, confira o log do servidor de aplicação. No meu caso, utilizo o Tomcat, que já vem por padrão quando do download do BI Server. O arquivo de logo do Tomcat é o catalina.out, e está no seguinte diretório: <diretório do bi-server>/tomcat/logs

Confira o arquivo do log que eu postei no pastebin.com. Creio que um dos motivos que devem deixar todos os estudantes desesperados em ler logs é exatamente isto: o que ler nestas centenas de linhas (no exemplo, precisamente 284). Aqui, vou resumir à parte que interessa, as duas primeiras linhas:

  1. 02:34:58,396 ERROR [Logger] misc-java.lang.String: ConnectFactory.ERROR_0001 - [pt_1] Database connection could not be established to: SampleData
  2. org.pentaho.platform.api.data.DatasourceServiceException: javax.naming.NameNotFoundException: Name SampleData is not bound in this Context

Análise do log

É aqui que a mágica começa a acontecer. Logo de cara, o relatório dá erro por um motivo muito simples. Existe uma base de dados SampleData que não foi encontrada:

Database connection could not be established to: SampleData

Por algum motivo, o banco de dados SampleData não estava disponibilizado no Pentaho. Você pode verificar isto no administration-console (PAC), acessível através da porta 8099 após subida do PAC. Lá estão as bases de dados. No meu caso, os problemas relatados no fórum não resolveram, foi apenas uma simples questão de reinserir o banco sample data na interface de administração, conforme dados abaixo:

Configuração da base SampleData
Configuração da base SampleData

E aí, prontinho! O BI server voltou a gerar os relatórios perfeitamente! A dica que dou é para manter uma versão do pentaho “pura”, sem instalar plugins ou gerar qualquer relatório e verificar como setá configurada. Pode facilitar muito, quando você é iniciante!

Como Acessar servidor MySQL Remotamente

Em alguns casos é necessário que se faça a manutenção ou acompanhamento do servidor MySQL remotamente. Por padrão, o MySQL responde apenas para o próprio servidor (localhost). É preciso permitir que tanto o servidor como o usuário estejam habilitados para este acesso.

Habilitando o Servidor MySQL

Para permitir o acesso a qualquer endereço de IP, é preciso modificar o arquivo de configuração do MySQL:

/etc/mysql/my.cnf

Use o seu editor favorito, eu gosto do nano. No meu caso, o comando seria:

sudo nano /etc/mysql/my.cnf

Procure agora pela linha bind-adress = 127.0.0.0

Comente-a, adicionando um ‘#’ (sem as aspas) no começo da linha. Salve (Ctrl + O), Enter; e saia do editor (Ctrl + X).

Agora, já com a configuração feita, é preciso reiniciar o MySQL, para que ele passe a responder com a nova configuração:

sudo /etc/init.d/mysql restart

Pronto, agora falta configurar os usuários que podem fazer o acesso remoto.

Habilitando o usuário para acesso remoto

Acesse o mysql:

mysql -u root -p

Agora, é preciso modificar a configuração do usuário que fará o acesso remoto, permitindo que ele acesse o servidor a partir de qualquer IP. Execute o seguinte comando:

GRANT ALL PRIVILEGES ON *.* TO 'USUARIO' IDENTIFIED BY 'SENHA' WITH GRANT OPTION; flush privileges;

Observação: lembre-se de prencher os campos USUARIO e SENHA, respectivamente, com seu usuário e senha. Lembre-se de que ambos devem ser digitados no comando entre aspas simples. Exemplo: garantir acesso ao usuario joaozinho, com a senha maria123:

GRANT ALL PRIVILEGES ON *.* TO ‘joazinho‘ IDENTIFIED BY ‘maria123‘ WITH GRANT OPTION; flush privileges;

Pronto, agora seu usuário já pode fazer o acesso remotamente. Faça o teste!

MySQL
MySQL

PHPMyAdmin – Bug na Edição de Tabelas

Se você usa o PHPMyAdmin e está com problemas para editar suas tabelas, com a seguinte mensagem de erro:

As opções editar no Grid, caixa de seleção, Editar, Copiar e Apagar não estão disponíveis.

Você precisará definir uma chave primária na sua tabela. Caso, eventualmente, sua tabela tenha valores repetidos em todas as colunas, o que inviabilizaria esta modificação, a solução é inserir uma nova coluna, de preferência auto-incrementável, e torná-la como chave privada. Para isto, basta selecionar a opção “Única”, na tab Estrutura da sua tabela do Banco de Dados.

Ainda não consegui muita informação a respeito, mas no meu caso, quando houve este problema, a versão nova do PHPMyAdmin (4), verifiquei que ele inseriu uma coluna em branco, que não conseguia apagar de jeito nenhum. Portanto, MUITO cuidado na hora de fazer inserção de dados diretamente pelo PHPMyAdmin!

Banco de Dados: Normalização

A normalização é um processo pelo qual procura aprimorar a consistência de um banco de dados, a partir de princípios e regras que evitam a repetição de dados, redundâncias desnecessárias ou até mesmo a perda de dados importantes. A normalização é baseada em técnicas de organização e análise de dados, decompondo-os em formas mais simples, conhecidas como formas normais. Os objetivos da normalização, normalmente são:

  • Diminuir o risco de inconsistências na base de dados;
  • Minimizar redundâncias;
  • Garantir a independência dos dados;
  • Facilitar a manutenção dos sistemas;
  • Facilitar a manipulação do Banco de Dados.

Continue reading “Banco de Dados: Normalização” »

Banco de Dados: Regras de Integridade

Bancos de dados são baseados em princípios de integridade e consistência, devendo prover regras e procedimentos que garantam estas características nos dados armazenados. Os SGBDs podem, muitas vezes, tratar de regras de validação de valores sem que isto seja processado pela aplicação, como a inserção de dado sobre um município inexistente, por erro de digitação. São várias as regras de integridade, que tem por objetivo garantir que as informações no banco sejam corretas. As três formas mais comuns são a integridade de domínio, de entidade e referencial.

Continue reading “Banco de Dados: Regras de Integridade” »

Banco de dados – Relacionamentos

Relacionamento é o nome dado à associação entre duas tabelas de um banco de dados, que servem para determinar registros que são correspondentes entre diferentes tabelas.

Um relacionamento depende da coincidência dos dados nos campos envolvidos, chamados campos-chaves. O relacionamento mais comum é o de uma chave primária numa tabela com a chave estrangeira de outra. Há três tipos de relacionamentos: um-para-um; um-para-muitos; muitos-para-muitos. Explico-os adiante. Continue reading “Banco de dados – Relacionamentos” »

Usuários de Banco de Dados

São várias as pessoas que trabalham no entorno de um banco de dados .Desde administradores a projetistas, até os usuários que operam efetivamente os diversos sistemas de uma organização, entenda quais são os principais usuários de Sistemas de Banco de Dados e o que fazem cada um deles.

  • Administrador de Dados: é o responsável por definir como os dados corporativos serão utilizados e compartilhados. Sua função é de organizar os dados, não se preocupando com a forma que é feito o armazenamento.
  • DBA – Administrador de Banco de Dados: é a pessoa responsável por gerenciar os SGBDs, dando e retirando concessão de acesso ao banco de dados aos usuários bem como responsável por monitorar seu desempenho, promovendo ajustes com vistas a melhorar a performance ou corrigir eventuais problemas.
  • DB Designer – Projetista de Banco de Dados: é o responsável por definir os dados que serão armazenados nos bancos de dados, formatando a estrutura adequada para o funcionamento do SGBD.
  • Usuário final: são aqueles que efetivamente operam os bancos de dados, através dos sistemas, podendo realizar consultas mais ou menos complexas de acordo com os seus conhecimentos sobre o funcionamento das aplicações e organização do banco.

Existem ainda outros usuários que prestam suporte ou atividades paralelas. Um bom exemplo são os desenvolvedores de aplicações, que utilizam os bancos de dados para os sistemas que desenvolvem, definindo requisitos e estruturas a serem implementadas.

 

O que é um Banco de Dados

Introdução

Em qualquer sistema, um dos requisitos mais importantes é a forma com que ele armazena, organiza e manipula seus dados relacionados. É inimaginável imaginar uma aplicação que não tenha um conjunto de dados mínimos para que seja funcional. Com o desenvolvimento das aplicações, que estão cada vez maiores, mais complexas, e tendo que atender a um número crescente de usuários, tornam-se cada vez mais importantes os bancos de dados.

Segundo Rob & Coronel, um banco de dados, ou base de dados,” é uma estrutura computacional compartilhada e integrada que armazena um conjunto de:

Deploy da primeira versão do MegaSena efetuado!

Acesse http://www.josebarbosa.com.br:8080/MegaSena/ e verifique como ficou a primeira versão da aplicação MegaSena, cuja modelagem dos dados já foi abordada em artigo, disponível neste link.

Já para a parte da camada de apresentação, o artigo está sendo escrito. Infelizmente, por alguns erros de iniciante, demorei a perceber pequenas falhas no código, e apaguei outras importantes, o que me fará levar este projeto, e todos os outros a um Gerenciador de Versão, que facilitará muito quando verificar este tipo de erro. Acontece!

Então, assim que estiver disponível no CVS, você poderá fazer a cópia e executar em sua própria máquina, bem como o artigo sobre a camada de apresentação, assim que escrita, estará disponível clicando aqui.

Instalando o wordpress – Erro de instalação: banco de dados

Uma dica rápida e importante, ao instalar o wordpress, e que pode parecer uma besteira, é lembrar que o primeiro passo é criar um banco de dados vazio (por padrão com nome wordpress).

Quando da minha instalação do site, até porque estava tendo problemas de conexão à internet, pensei em todo o tipo de problema possível, menos o óbvio, de que faltava um banco com o nome que precisava.