3
respostas

Configurar Mysql

Bom dia,

No exercícios/aulas 3 do curso "Java e JSF" ele passa um projeto com configuração de banco de dados e pede que a gente rode alguns comandos, porque já está tudo pronto. Eu baixei o MySql da internet, pois não é disponibilizado no vídeo, e não consigo fazer a conexão do banco de dados, mesmo após criar a database que ele ensina. Tentei diversas vezes, porém sem sucesso. Lembrando que no projeto já vem com conexão e tudo teoricamente ok, só é necessário criar o bancado de dados "livrariadb". Mas quanto eu tento conectar não vai. Já tentei criar novos usuários, dei todas as permissões possíveis, mas não conecta. Estou usando o MySQL WorkBench 8

Com usuário padrão root, sem senha:

 GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/livraria] threw exception [org.hibernate.exception.GenericJDBCException: Could not open connection] with root cause
java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

Criei usuários com outras senhas e outros métodos, porém eles não conseguem enxergar o banco e se conectar.

Com outro usuário eu recebo o seguinte erro, com e sem senha, utilizando outros métodos de conexão:

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/livraria] threw exception [org.hibernate.exception.GenericJDBCException: Could not open connection] with root cause
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
    at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:992)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3496)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2460)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:193)
3 respostas

Ola Silas, tudo bem? Você consegue postar o código referente a conexão e configuração do banco de dados?

Fico no aguardo.

Oi Matheus! Eu acho que consegui resolver instalando o mysql de novo e mudando uma configuração de tipo de password. Porém a conexão não funciona ainda. No projeto existe uma classe que deveria popular o banco (PopulaBanco) e ela apresenta esse erro:

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/livraria] threw exception [org.hibernate.exception.GenericJDBCException: Could not open connection] with root cause
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long

E esse erro ocorre quando eu tento carregar a página também. Eu utilizei TODOS os projetos prontos do curso, mas sempre ocorre isso. Segue a configuração do banco:

<?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/livrariadb" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="1234" />

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

</persistence>

Aparentemente agora o banco está conectando A senha do root eu coloquei porque exigia no mínimo 4 digitos.

Fala ai Silas, esse erro está em alguma conversão de Long para String no projeto.

Se possível sobe ele no Github e me passa o link, eu dou uma olhada (se ainda não resolveu).