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:
mysql --max_allowed_packet=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

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-name>
<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-param>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.