Erro utizando banco JPA banco Mysql na minha hospedagem!

9 respostas
rockstorm

Bom dia,
Tenho um serviço de hospedagem onde estou tentando colocar meu site que esta desenvolvido utilizando Struts, JPA(Hibernate), Tomcat, Mysql.

Quando eu testo apontando para o banco em minha maquina funciona perfeitamente, mas quanto tento utilizar o banco que esta na minha hospedagem, tenho esta excessão:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:73)
	at com.wr.business.jpa.EmpresaDAO.findAll(EmpresaDAO.java:139)
	at com.wr.struts.action.EmpresaLoad.execute(EmpresaLoad.java:38)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
.
.
.
.
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.doList(Loader.java:2214)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
	at org.hibernate.loader.Loader.list(Loader.java:2090)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:64)
	... 22 more
.
.
.
Caused by: java.sql.SQLException: Syntax error or access violation,  message from server: "SELECT command denied to user 'wrvirtua_root'@'200-171-78-51.dsl.telesp.net.br' for table 'empresa'"
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1496)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1778)
	at org.hibernate.loader.Loader.doQuery(Loader.java:662)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
	at org.hibernate.loader.Loader.doList(Loader.java:2211)
	... 30 more

Eu não sei se pode ser permissão verificando a mensagem Syntax error or access violation, message from server: “SELECT command denied to user ‘wrvirtua_root’@‘200-171-78-51.dsl.telesp.net.br’ for table ‘empresa’”

meu persistence.xml esta assim:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    
	<persistence-unit name="webBoleto"
		transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>com.wr.business.jpa.Email</class>
		<class>com.wr.business.jpa.Projeto</class>
		<class>com.wr.business.jpa.Bancario</class>
		<class>com.wr.business.jpa.Empresa</class>
		<properties>
			<property name="hibernate.connection.driver_class"
				value="com.mysql.jdbc.Driver" />
			<property name="hibernate.connection.url"
				value="jdbc:mysql://ip_do_servidor_mysql/wrvirtua_projeto" />
			<property name="hibernate.connection.username" value="root" />
			<property name="hibernate.connection.password" value="senha" />
		</properties>
	</persistence-unit>

</persistence>

alguem já passou por isso?

grato

9 Respostas

Maniezo

O banco esta la, mas e a sua aplicação não pelo geito? Imagino que esteja na sua maquina e tentando conectar com banco de lá, por isso o mysql não ta deixando seu ip acessar, no meu host tenho como definir o ips que pode conectar com o banco. Você tem que abrir acesso ao banco pelo seu ip ‘200-171-78-51’.

rockstorm

Estou tentando acessar da minha maquina justamente porque quando publico lá, ele dá o mesmo erro.
No minha administração de hospedagem, eu consigo setar para quem devo liberar acesso. Eu deixei com acesso liberado %.

Maniezo

pois é, no meu host pelo cpnal esse ‘%’ não funciona bem… mas estranho a aplicação estando lá não teria porque dar o erro, ao menos que o banco esteja em maquina diferente, no meu fica o ip da rede interna do banco mas o proprio pessoal do host que setou… esse erro que vc mostrou foi pela sua maquina pelo ip e quando roda lá qual erro que deu?? ja deve ter tentado o 2 tipo de conexão (localhost, 127.0.0.1) ok?

rockstorm

Ja testei com localhost publicando minha aplicação na mesma host do banco e deu o mesmo erro. vou tentar com 127.0.0.1.
Uma duvida, no tutorial da hospedagem diz que a URL da conexão não precisa da porta 3306, isto é correto??

Maniezo

Apesar do mysql usar essa porta mesmo, eu nunca informa ela na aplicação…

rockstorm

é …fiz todos os testes possiveis, criei novamente o banco, de previlégios ALL, publiquei na hospedagem o sistema e o fiz acessar usando localhost, 127.0.0.1, etc…
e o erro ainda persiste!

Maniezo

Estranho… esse erro me parece ser do banco mas posso estar enganado… na dúvida faria uma conexao diretão, script jsp mesmo conectando direto pra tirar a dúvida se é o banco ou não…

F

Olá amigo.
Isso tá parecendo erro de dialeto de banco.

Insira mais essa property no seu persistence.xml:

Espero ter ajudado.
Att,
Fernando

arthurminarini

não sei se será util mas eu tive alguns problemas tbm. confira:

1-sistema operacional (se linux então cuidado com sql pois será case sensitive, se sua maquina é window ai sql não levara em consideração )
2-versão do mysql.
3-engine da tabela- MyISAM ou INoDB (pois nesta ultima contem chave estrangeira) pois para cada sql instalado existe um arquivo de configuração dele que define o engine padrão no meu caso o do servidor era myisam e o da minha maquina era innodb (mais novo)

Criado 21 de janeiro de 2008
Ultima resposta 20 de fev. de 2009
Respostas 9
Participantes 4