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)
- O assistente não conseguiu criar o novo banco de dados.
- Ao processar a consulta! Observe se todos os filtros foram passados com valores corretos!
- No Suitable Driver
- Operator does not exist: integer = character varying.
Lost connection to MYSQL server during query socket error on write. WSAGetLastError return 1004($2746)

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

Ocorre porque o Charset Latin1 não está disponível nesta versão do Postgres.
Solução:
- Ir até Configurações Avançadas
- 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:
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
- No databases.xml, que por padrão fica no diretório: C:\Program Files (x86)\Softwell Solutions\Maker Studio Bootstrap\Webrun Studio Bootstrap\config
- Remover o to_ascii do parâmetro UpperFunctionStart no grupo PostgreSQL e o parênteses ")" do parâmetro UpperFunctionEnd.
- 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:
-
Acesse a tela de Configurações do Sistema no Webrun.
-
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.
-
Em seguida, clique no botão
-
Na sequência, clique em
.
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
- No projeto selecionado, abra o menu Utilitários;

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

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