Невозможно получить доступ к mysql из jpa после обновления Catalina - PullRequest
0 голосов
/ 27 апреля 2020

Мое jpa-приложение работало нормально (на самом деле, мои 2 jpa-приложения), так как я обновляю свою ма c до Каталины (и перезапускаю ее, конечно).

С тех пор я получил

org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator initiateService
WARN: HHH000342: Could not obtain connection to query metadata : null
Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
...
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

Но из mySQL Workbench я могу без проблем обращаться к базам данных.

Я пытался переустановить mysql, даже используя brew для этого. Ничего не работает Я ничего не изменил в своем файле постоянства. xml файл и мой код.

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="MyProject" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myschema"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="root"/>
      <property name="javax.persistence.jdbc.password" value="MyPassword"/>
      <property name="javax.persistence.schema-generation.database.action" value="update"/>
    </properties>
  </persistence-unit>
</persistence>

Моя mysql версия 8.0.19.

Спасибо!

Обновление на следующий день (28/4):

К настоящему времени у меня есть: 1) Добавил эту строку в мое постоянство. xml:

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

Как я получена новая ошибка ...

Access denied for user 'root'@'localhost' (using password: YES)

2) Следуйте этим инструкциям, чтобы установить root пароль: https://medium.com/@aungzanbaw / how-to-reset- root -user-password-in - mysql -8-0-a5c328d098a8

Теперь моя новая ошибка

Connection refused

Обновление на следующий день (29/4):

Сегодня я остановился и запустил mysql с терминала:

sudo /usr/local/bin/mysql.server stop
sudo /usr/local/bin/mysql.server start

Затем я получил новую ошибку

The server time zone value 'CEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Давайте продолжим мое расследование!

После этого вопроса: https://es.stackoverflow.com/questions/48935/configurar-zona-horaria-jdbc-driver-java/48946?newreg=494e1840d4404575a81dc4ec10200266

Я изменил постоянство. xml:

Итак, я получил

Table 'myschema.mytable' doesn't exist

ошибка.

1 Ответ

0 голосов
/ 29 апреля 2020

Наконец-то я понял, не уверен, как ... возможно, перезапуск с командной строки.

Вот мое окончательное постоянство. xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="MyProject" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myschema?serverTimezone=UTC"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="root"/>
      <property name="javax.persistence.jdbc.password" value="MyPassword"/>
      <property name="javax.persistence.schema-generation.database.action" value="update"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect" />
    </properties>
  </persistence-unit>
</persistence>

Использование MySQL 8 Диалект необходим для возможности создания таблиц без этой ошибки:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=MyISAM' at line 1
...