Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Erro #1064


granito

Pergunta

Olá, pessoal!

Eu sou novo aqui, e relativamente novo no mysql. estou quebrando a cabeça pra tentar resolver um problema com um SELECT, que insiste em dar um erro #1064.

#1064 - 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 'out , nov , dez , id , id as kt_pk_alunos FROM alunos WHERE id = 3. ( MUPD_RS ) ' at line 1

Aqui tá a query:

SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, out, nov, dez, id, id AS kt_pk_alunos
FROM alunos
WHERE id = 3.(
MUPD_RS
)

Alguém aí sabe me dizer qual é o problema aqui?

Desde já, agradeço.

Editado por Denis Courcy
Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'granito'

Você pode traduzir isso?

id = 3.(MUPD_RS)

O que é este ponto e o que está em MUPD_RS

Se o ponto for o sinal de multiplicação use * no lugar do ponto

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Denis.

Não, não posso. Essa query foi gerada automaticamente pelo sistema no qual estou trabalhando e pra ser sincero, não sei o que esse ".(MUPD_RS)" significa.

De qualquer forma, tentei fazer a mesma cosulta, dessa vez sem esse tal ".(MUPD_RS)", e o erro continua.

BTW, pode me explicar o que é esse MUPD_RS?

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'granito'

Tente limitar este erro ao ponto onde foquei no primeiro post. Veja se você consegue executar esta query desta forma

SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, out, nov, dez, id, id AS kt_pk_alunos
FROM alunos
WHERE id = 3
ou desta forma
SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, out, nov, dez, id, id AS kt_pk_alunos
FROM alunos

e obter resultados corretos.

Link para o comentário
Compartilhar em outros sites

  • 0

'granito'

Você pode passar a estrutura da tabela?

Estou desconfiado que tem atributos que não existem ou que estão com nomes errados.

Link para o comentário
Compartilhar em outros sites

  • 0

'granito'

Não consigo determinar onde este código

SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, out, nov, dez, id, id AS kt_pk_alunos
FROM alunos

está errado.

Só resta o nome da tabela. Ele está correto? A tabela se chama "alunos"?

Link para o comentário
Compartilhar em outros sites

  • 0

'granito'

Mais uma vez vamos testar e ver se o que penso do phpmyadmin é verdade.

Tenta agora a reporte o erro encontrado. informe, também a versão de seu servidor MySQL.

SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, out, nov, dez, id
FROM alunos

Link para o comentário
Compartilhar em outros sites

  • 0

Ainda sem funcionar. Acho que vale acrescentar que, estranhamente, o phpmyadmin está adicionando "LIMIT 0 , 30" à todas as consultas realizadas nessa table.

O erro retornado:

#1064 - 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 'out , nov , dez , id FROM alunos

LIMIT 0, 30' at line 1

Eu estou usando a versão 5.0 do MySQL Server.

Editado por granito
Link para o comentário
Compartilhar em outros sites

  • 0
Alguma idéia?

Analisei novamente a estrutura de sua tabela. Creio que você está sendo limitado pelo número de campos TEXT .

Veja o que fala o manual sobre este tipo de campo:

Referência:6.2.3.2. Os Tipos BLOB e TEXT

O tamanho máximo de uma objeto BLOB ou TEXTé determinado pelo seu tipo, mas o maior valor

que você pode, atualmente, transmitir entre o cliente e o servidor é determinado pela quantidade

de memória disponível e o tamanho dos buffers de comunicação. Você pode mudar o tamanho

do buffer de mensagem (max_allowed_packet), mas você deve faze-lo no servidor e

no cliente. See Secção 5.5.2, “Parâmetros de Sintonia do Servidor”.

Faça experiências usando menos campos e vá acrescentando um de cada vez.

Link para o comentário
Compartilhar em outros sites

  • 0

Certo, funcionou até

SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, id
FROM alunos

Arg! Já desconfiava que era culpa do cara que fez a tabela... :angry: Onde já se viu fazer uma table tão grande só com TEXT?!

Mas, enfim, há um comando eu possa usar para mudar o tipo das colunas de TEXT pra VARCHAR?

Editado por granito
Link para o comentário
Compartilhar em outros sites

  • 0
Certo, funcionou até

SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, id
FROM alunos

Arg! Já desconfiava que era culpa do cara que fez a tabela... :angry: Onde já se viu fazer uma table tão grande só com TEXT?!

Mas, enfim, há um comando eu possa usar para mudar o tipo das colunas de TEXT pra VARCHAR?

MODIFY. Segue a sintaxe: ALTER TABLE suatabela MODIFY campo VARCHAR(x);

Referência:6.5.4. Sintaxe ALTER TABLE

Link para o comentário
Compartilhar em outros sites

  • 0

Alterei os TYPEs manualmente mesmo. Mas, por favor, não feche o tópico ainda, por que algo me diz que esse não é o único problema da query inicial.

EDIT: O problema continua ao tentar

SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, out, nov, dez, id, id AS kt_pk_alunos
FROM alunos
WHERE id = 3
WTF? EDIT 2: Continua só funcionando até
SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, id, id AS kt_pk_alunos
FROM alunos
EDIT 3: Tentei isso
SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, nov, dez, id, id AS kt_pk_alunos
FROM alunos

e funcionou. A query está sem o campo 'out', o que me leva a crer que é ele que está causando o problema. A pergunta que segue: porquê?

Editado por granito
Link para o comentário
Compartilhar em outros sites

  • 0

'granito'

Por que você não cria outro campo tipo out2 e copia os dados de out para out2 e depois exclua o campo out e renomeie o campo ot2 para out?

Vai ser mais fácil que pesquisar o porquê do campo out não funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, resolvido!

Eu fiz o que você propôs, mas o problema continuou. Depois, eu renomeei o 'out' pra 'oct' e funcionou! Provavelmente o MySQL tava interpretando o 'out' como um comando, daí o problema.

Obrigado, cara. Valeu pela atenção. Abraço.

PS.: Eu concordo absolutamente com tua assinatura. Tenho isso como lema.

Editado por granito
Link para o comentário
Compartilhar em outros sites

  • 0

'granito'

Provavelmente o MySQL tava interpretando o 'out' como um comando, daí o problema.

É isso mesmo. estava na cara o tempo todo. out é palavra reservada do mysql.

Palavras reservadas podem ser nomes de campos mas tem que ser representadas entre crases. Por exemplo `out`.

Tópico fechado.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...