O erro MySQLSyntaxErrorException: command denied

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa

Este erro é comum em aplicações Java e podem ocorrer dentro das situações informadas abaixo:

1. O usuário não possui permissão adequada ao banco de dados. Neste caso, veja os seguintes tópicos:

2. A query em questão foi gerada por assistente de um aplicativo, então, recomendamos analisar a sintaxe em questão. Como no servidor online, na hospedagem padrão, há uma exigência de prefixo, exige-se uma mudança no fonte do aplicativo.
Muitas vezes está contido o nome do banco de dados, junto a tabela e seu respectivo campo. Por exemplo, o erro é apresentado em relatório JasperReports onde, no fonte de um .jrxml, vemos a sintaxe contida com o nome do banco de dados (localmente seria relatorios, mas online int_relatorios) que precisa ser removido, ou modificado.

<queryString>
	<![CDATA[SELECT relatorios.produtos.`ProdutoID`, relatorios.produtos.`ProdutoNome`, relatorios.produtos.preco FROM produtos]]>
</queryString>

Editando para a forma correta, o problema desaparece:

<queryString>
	<![CDATA[SELECT produtos.`ProdutoID`, produtos.`ProdutoNome`, produtos.preco FROM produtos]]>
</queryString>


3. A query é gerada pela JPA ou Hibernate. O MySQL online é sensível a letras maiúsculas e minúsculas. Observe se a query não está com palavras em maiúscula na geração da sintaxe, no nome da tabela, sendo que originalmente, online, é tudo em minúsculo.

select * from Produto

Para resolver, basta acrescentar em suas entidades a anotação @Table(name = "produto").