Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Erro SQLGrammarException

A primeira vez que estou tendo esse erro, alguém pode dar uma dica?

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
7 respostas

Oi Clerman, tudo bem?

apenas com essa linha não da pra saber o problema, você poderia passar o log completo? Assim podemos ter mais pistas do que pode estar acontecendo =)

Olá Samir, esse erro esta ocorrendo no servidor da Amazon EC2, mas na minha máquina não acontece o mesmo erro. O log é muito extenso, e esta relacionado ao dialect hibernate. Se achar necessário posto aqui, porém a página que estou acessando tem acesso liberado... Agradeço a ajuda por enquanto!

Olá Clerman,

De acordo com a documentação do Hibernate, disponível aqui, essa exceção é lançada quando o SQL enviado para o banco de dados possui algum problema.

Poderia por gentileza postar o código do método que disparou a exceção?

Oi Clerman, os bancos que vc está usando em produção e local são os mesmos? Mesma versão e etc? Pode ser que tenha que mudar esse dialeto no Persistence.xml.

Renato e Samir, essa mesma aplicação estava funcionando no ambiente da Amazon ec2 e depois de algumas evoluções no projeto, me estourou esse erro. Agora estou investigando as alterações que fiz conforme sugestão do Renato e terminando posto novamente o status.

solução!

Olá Samir e Renato, consegui identificar o erro aqui. O problema acontecia quando um parâmetro com um valor não esperado estava sendo passado para fazer a consulta e daí estourava o erro, não sei o por que do erro, e outra situação que a aplicação funcionava localmente e no servidor não!

Então Clerman, é que para dar uma resposta com certeza, teria que verificar como está o código e talvez configurações do ambiente.

Já aconteceu uma situação parecida comigo.

No meu caso, eu estava construindo o HQL concatenando os parâmetros para formar uma única String. Algo como:

String hql = "from XYZ x ";
hql += " where x.campo1 = '" + param1 + "' ";
hql += "   and x.campo2 = " + param2;

Logicamente essa não é a melhor forma, mas era como estava. E nesse caso, no servidor dava um problema, enquanto que localhost não.

No servidor eu tinha um problema de charset, que desconfigurava o valor do "param1" e construía o HQL de forma errônea.

Não sei se é o seu caso, ou se é algo parecido, mas só ilustrando que às vezes isso pode acontecer. Mesmo o código-fonte sendo idêntico, o ambiente pode interferir no comportamento do seu sistema, especialmente quando o código-fonte deixa esse tipo de lacuna, que foi o meu caso nesse exemplo.