3
respostas

O projeto não reconhece o banco criado.

Estou iniciando os meus estudos agora com aplicações web Java. Importei o projeto do curso, como o professor orientou, mas utilizei uma imagem do mysql no docker. Conectei o servidor do mysql pelo workbench e configurei o arquivo persistente.xml do projeto para se conectar com o banco criado. Porém ele sempre me retornar esse erro:

Ierro-console

Arquivo persistente.xml:

<?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_2_0.xsd"
    version="2.0">

    <persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL">

           <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <class>br.com.caelum.livraria.modelo.Livro</class>
        <class>br.com.caelum.livraria.modelo.Autor</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql//localhost:3306/livrariadb" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="root" />

            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
        </properties>
    </persistence-unit>

</persistence>

Se alguém pudesse me ajudar a entender o que est, eu agradeceria muito.

3 respostas

Qual SO esta usando?

Se for linux:

ifconfig

Você vai pegar o endereço INET do seu docker:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E substituir no arquivo persistence.xml em localhost.

Por exemplo:

<property name="javax.persistence.jdbc.url" value="jdbc:mysql//172.17.0.1:3306/livrariadb" />

No Windows acredito que deve ser bem parecido. Roda o comando pra aparecer seu IP e faz o mesmo no seu arquivo persistence.

Se der certo ou errado avisa ai. Abraço, bom estudo!

Utilizo o sistema do linux. Fiz a alteração no arquivo persistente.xml, mas quando executei de novo a classe PopulaBanco o console me retornou o mesmo erro.

erro-console

inet do docker:

informacão-terminal

Quando fui configurar o container eu configurei para que a porta do mysql apontasse para porta padrão dele no sistema operacional(3306) e configurei a conexão no workbench. Falei caso essa informação seja útil.

Informações sobre o container:

container-docker

Configuração da conexão no workbench:

Conexão-com-servidor-mysql

Tenta passar assim:

<properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/livrariadb" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="SUA_SENHA" />

            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
        </properties>