ошибка спящего режима не существует - PullRequest
12 голосов
/ 20 декабря 2010

В конфигурации hibernate.cfg.xml я добавляю <property name="hibernate.hbm2ddl.auto">create</property> Hibernate автоматически создает таблицу при запуске приложения.Тем не менее, я удаляю таблицу из базы данных вручную, запустив Drop Table SQL.Затем снова запустите приложение hibernate.Появляется исключение

Причина: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: таблица 'test.person' не существует

единственный способ исправитьпроблема заключается в перезапуске базы данных Mysql.Может ли кто-нибудь объяснить эту проблему для меня?

это мой hibernate.cfg.xml

<hibernate-configuration>  
<session-factory>  
    <property name="hibernate.connection.driver_class">  
        com.mysql.jdbc.Driver  
    </property>  
    <property name="hibernate.connection.url">  
        jdbc:mysql://localhost/test
    </property>  
    <property name="connection.username">root</property>  
    <property name="connection.password">root</property>  
    <property name="dialect">  
        org.hibernate.dialect.MySQLDialect  
    </property>  


    <!-- Drop and re-create the database schema on startup -->
    <property name="hibernate.hbm2ddl.auto">create</property>  

    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>

    <!-- Disable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>

    <!-- Mapping files -->  
    <mapping resource="com/mapping/Event.hbm.xml" />  
    <mapping resource="com/mapping/Person.hbm.xml"/>
</session-factory>  

Thx

Ответы [ 6 ]

12 голосов
/ 20 декабря 2010

Я не верю, что использование create обновит схему на месте, чтобы повторно добавить удаленную таблицу. Попробуйте:

<property name="hibernate.hbm2ddl.auto">update</property>

Это создание схемы, если она не существует, и попытка изменить существующую схему в соответствии с определенным вами отображением.

Также прочитайте этот вопрос обо всех возможных значениях.

6 голосов
/ 26 февраля 2019

пожалуйста, измените код с:

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

на:

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

попробуйте.

5 голосов
/ 20 декабря 2010

Есть ли пробел между "свойством" и "именем"?

<propertyname="hibernate.hbm2ddl.auto">create</property>

Если нет, то это, вероятно, проблема.Кроме того, что вы имеете в виду, что это исправляет, когда вы «перезагружаете базу данных MySQL»?Означает ли это, что вы просто перезапускаете сервер MySQL, или это означает, что вам нужно вручную воссоздать таблицу?Кроме того, если приведенный выше фрагмент XML действительно содержит пробел между «свойством» и «именем», укажите также, кроме журналов гибернации, особенно ту часть, в которой перечислены все идентифицированные свойства.

2 голосов
/ 02 ноября 2015

У меня была такая же проблема. Я заметил, что я использовал auto_increment (я использовал MySQL Dialect) для поля String. Я изменил его на int, который решил проблему

1 голос
/ 01 июля 2019

Пожалуйста, измените код с:

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

на:

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

Попробуйте.Это действительно сработало в моем случае.

0 голосов
/ 07 июля 2019

org.hibernate.dialect.MySQLDialect

в случае базы данных mySQL свойство диалекта должно быть изменено на следующее:

org.hibernate.dialect.MySQL5Dialect

по умолчанию он поставляется с MySQLDialect with, который не поддерживается движком InnoDB Storage конфигурации базы данных MySQL, которая используется по умолчанию для создания таблицы в схеме Default.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...