Mudanças entre as edições de "O erro MySQLSyntaxErrorException: command denied"

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa
Linha 6: Linha 6:
  
 
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. <br />
 
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. <br />
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 <u>relatorios</u>, mas online <u>int_relatorios</u>) que precisa ser removido. <br />
+
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 <u>relatorios</u>, mas online <u>int_relatorios</u>) que precisa ser removido, ou modificado. <br />
 
<pre>
 
<pre>
 
<queryString>
 
<queryString>
 
<![CDATA[SELECT relatorios.produtos.`ProdutoID`, relatorios.produtos.`ProdutoNome`, relatorios.produtos.preco FROM produtos]]>
 
<![CDATA[SELECT relatorios.produtos.`ProdutoID`, relatorios.produtos.`ProdutoNome`, relatorios.produtos.preco FROM produtos]]>
 +
</queryString>
 +
</pre>
 +
 +
O correto seria: <br />
 +
<pre>
 +
<queryString>
 +
<![CDATA[SELECT produtos.`ProdutoID`, produtos.`ProdutoNome`, produtos.preco FROM produtos]]>
 
</queryString>
 
</queryString>
 
</pre>
 
</pre>

Edição das 04h07min de 16 de março de 2016

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>

O correto seria:

<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

Contorne acrescentando a anotação @Table(name = "produto").