Pular para o conteúdo principal

Erros & Soluções - Banco de dados

A Softwell Solutions busca através deste guia, apresentar ao usuário uma lista de erros mais comuns no Banco de dados e sua solução. Este tópico estará em constante atualização.

Lost connection to MYSQL server during query socket error on write. WSAGetLastError return 1004($2746)

image1769.jpg

Para corrigir, defina um novo tamanho máximo para pacotes de dados no servidor através das seguintes opções:

  • Primeira opção - por meio da linha de comando de inicialização do servidor:

shell>mysql--max\_allowed\_packed=16M

  • Segunda opção - por meio da adição de um parâmetro no INI de configuração do servidor:

[mysqld]

max\_allowed\_packet=16M

  • ou

[mysqld]

set-variable = max\_allowed\_packet=10240000

O assistente não conseguiu criar o novo banco de dados

image1811.jpg

Ocorre porque o Charset Latin1 não está disponível nesta versão do Postgres.

Solução:

  1. Ir até Configurações Avançadas
  2. Modificar o parâmetro CharSet de Latin1 para Win1252.

Ao processar a consulta, Observe se todos os filtros foram passados com valores corretos!

Quando aparecer a mensagem:

image1772.jpg

Ocorrida na aba Localizar do formulário, significa que o charset usado não é compatível com o SGBD. Para evitar o erro, utilize o charset compatível com o SGBD. Clique aqui para visualizar os tipos de charset suportado pelos SGBD´s.

Casos com Postgres UTF8

  1. No databases.xml, que por padrão fica no diretório: C:\Program Files (x86)\Softwell Solutions\Maker Studio Bootstrap\Webrun Studio Bootstrap\config
  2. Remover o to_ascii do parâmetro UpperFunctionStart no grupo PostgreSQL e o parênteses ")" do parâmetro UpperFunctionEnd.
  3. Após remoção, os parâmetros devem ficar conforme o modelo abaixo:

<item>
      <item-name>UpperFunctionStart</item-param>
      <item-param>UPPER(</item-param>``
</item>

<item>
      <item-name>UpperFunctionEnd</item-name>
      <item-param)</item-param>
</item>

É necessário reiniciar o Webrun após salvar o databases.xml.

Observações:

  • Este problema também ocorre quando um UNION estiver associado a um formulário.
  • Ao ser removido o to_ascii é necessário alterar o seguinte parâmetro:

Antes:

<item>  
      <item-name>removeNonAsciiCharsOnTextSearch</item-name>
      <item-param>1``</item-param>``
</item>

Depois:

<item>  
      <item-name>removeNonAsciiCharsOnTextSearch</item-name>
      <item-name>0``</item-param>``
</item>

No Suitable Driver

A mensagem de erro No Suitable Driver é apresentada ao tentar acessar no Webrun um projeto criado sobre o banco de dados Postgres. O erro é apresentado nas versões anteriores do Webrun 3, ao tentar acessar os projetos de exemplos que acompanham o "Instalador do Maker" ou um novo projeto no Webrun.

Solução: Para a correção do erro:

  1. Acesse a tela de Configurações do Sistema no Webrun.

  2. No campo Servidor, informe o IP ou o nome do computador no qual está o banco de dados e, no campo Banco, informe o nome do banco de dados.

  3. Em seguida, clique no botão image1915.gif

  4. Na sequência, clique em image1916.gif.

Operator does not exist: integer character varying


Ao exportar um banco criado no postgres 8.x para a versão 9, poderá apresentar erro de operador de comparação de inteiro com string(varchar), isso ocorre pois as versões do postgres a partir da 8.3 não fazem conversões Implícitas de valores.

Executando o script abaixo é possível fazer com que haja uma conversão de tipos, forçando um CAST que converte o valor de um tipo de dado para outro.

Para executar o script, siga os seguintes passos

Maker

  1. No projeto selecionado, abra o menu Utilitários;

  1. Selecione a opção Executor de Scripts SQL...

  1. Insira o script abaixo:

Script:

CREATE OR REPLACE FUNCTION public.int_equal_string(i integer, s character varying)
RETURNS boolean AS
'select cast($1 as varchar(20)) = $2'
LANGUAGE 'sql' VOLATILE
COST 100;

CREATE OPERATOR public.=(
PROCEDURE = "int_equal_string",
LEFTARG = int4,
RIGHTARG = varchar);

---
CREATE OR REPLACE FUNCTION public.bigint_equal_string(i bigint, s character varying)
RETURNS boolean AS
'select cast($1 as varchar(20)) = $2'
LANGUAGE 'sql' VOLATILE
COST 100;

CREATE OPERATOR public.=(
PROCEDURE = "bigint_equal_string",
LEFTARG = bigint,
RIGHTARG = varchar);

Informado o script , execute-o, salve o projeto e observe que os problemas de conversões de tipos será solucionado.

Observação: caso o erro de conversão do volte a ocorrer recomendamos utilizar a solução que consta na documentação do PostgreSQL.