Erro na execução de query SQL

(Elcio) #1

Erro na execução de query SQL. A query está sendo modificada pelo SC, não levando em consideração um “as” (alias) já existente. Observe a mensagem enviada de uma consulta:
[font=Verdana]
ERRO
Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘as pedido, as atual, mp_var.csmmed as csmmed, as csm1, as media3m, as media6’ at line 1
SelectLimit(SELECT mp_var.descricao as mp_var_descricao, mp_var.preco as mp_var_preco, mp_var.ref_fornec as mp_var_ref_fornec, mp_var.unidade as mp_var_unidade, mp_var.qdade as mp_var_qdade, as pedido, as atual, mp_var.csmmed as csmmed, as csm1, as media3m, as media6m, round(mp_var.qdade / mp_var.csmmed * 30) as dias, as total, mp_var.observacao as mp_var_observacao, mp_var.codigo as codigo from mp_var INNER JOIN fornec ON mp_var.fornecedor = fornec.cgc_cpf where mp_var.situacao=‘1’ order by mp_var.descricao asc, 17, 0)[/font]

[color=black]A query orininal é a seguinte:[/color]

SELECT
mp_var.codigo AS codigo,
mp_var.variacao,
mp_var.descricao,
mp_var.preco,
mp_var.unidade,
mp_var.qdade,
mp_var.reserva,
mp_var.etqmax,
mp_var.etqmin,
mp_var.etqmed,
mp_var.csmmed AS csmmed,
mp_var.fornecedor,
mp_var.observacao,
fornec.razao,
mp_var.ref_fornec,
round(mp_var.qdade / mp_var.csmmed * 30) AS dias
FROM
mp_var INNER JOIN fornec ON mp_var.fornecedor = fornec.cgc_cpf
WHERE
mp_var.situacao=‘1’
ORDER BY
mp_var.descricao

O SC está alterando a query e adionando o alias em todos os campos, mesmo nos campos que já possuiam alias na query orinigal.

(Kleyber) #2

Elcio,

Poderias fazer um teste? Tente alterar o SQL de outra consulta, mas que seja um SQL bem menor que esse… Eu tenho este problema também na versão 5.01.0018, mas somente com SELECTs bem grandes… experimente inserir ou alterar um campo em um SELECT menor e me diga se dá o mesmo erro. Se não der, o problema é o mesmo da versão que uso.

(Elcio) #3

Não sei exatamente onde pode estar o erro, pois começou a aparecer somente após a atualização para nova versão. Acredito ser algum erro da migração, mas precisaria que o pessoal da Netmake verificasse. Achei alguns detalhes que acredito que ajudará a achar o problema.
Segue a query da consulta:

SELECT
mp_var.codigo AS codigo,
mp_var.variacao,
mp_var.descricao,
mp_var.preco,
mp_var.unidade,
mp_var.qdade,
mp_var.reserva,
mp_var.etqmax,
mp_var.etqmin,
mp_var.etqmed,
mp_var.csmmed AS csmmed,
mp_var.fornecedor,
mp_var.observacao,
fornec.razao,
mp_var.ref_fornec,
round(mp_var.qdade / mp_var.csmmed * 30) AS dias
FROM
mp_var INNER JOIN fornec ON mp_var.fornecedor = fornec.cgc_cpf
WHERE
mp_var.situacao=‘1’
ORDER BY
mp_var.descricao

Agora a query que o SC montou:
Mensagem Pessoal (Online)

ERRO
Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘as pedido, as atual, mp_var.csmmed as csmmed, as csm1, as media3m, as media6’ at line 1
SelectLimit(
SELECT
mp_var.descricao as mp_var_descricao,
mp_var.preco as mp_var_preco,
mp_var.ref_fornec as mp_var_ref_fornec,
mp_var.unidade as mp_var_unidade,
mp_var.qdade as mp_var_qdade,
as pedido,
as atual,
mp_var.csmmed as csmmed,
as csm1,
as media3m,
as media6m,
round(mp_var.qdade / mp_var.csmmed * 30) as dias,
[color=red] as total, [/color]
mp_var.observacao as mp_var_observacao,
mp_var.codigo as codigo
from
mp_var INNER JOIN fornec ON mp_var.fornecedor = fornec.cgc_cpf
where
mp_var.situacao=‘1’
order by
mp_var.descricao asc, 17, 0)

Os campos em vermelho, não pertencem ao banco de dados, mas sim a campos criados dentro da consulta, com cálculos apenas mas que foram incluídos na query que o SC montou para formar a consulta. Acredito que assim fica explicito o erro, mas não sei como arrumá-lo ainda.

(Elcio) #4

Após diversas tentativas de entender o erro e da impossibilidade de excluir os campos criados (pois ficaram fixos após a atualização - sem a lixeira para excluí-los) entrei na base de dados do SC manualmente e exclui os campos que entravam na consulta. Criei eles novamente e finalmente funcionou corretamente.
Infelizmente a Netmake nem se pronunciou para ajudar ou corrigir o erro. Como sempre nós somos os cobaias para verificar as versões.