簡體   English   中英

Hibernate 很難使用 MySQL 創建表

[英]Hibernate has difficult with create table using MySQL

我正在使用 JavaFX、Maven、Hibernate 等在架構客戶端服務器中做一個學校項目,我對單獨的 Hibernate (沒有 Spring)的實現有很大的問題。 我不確定這是配置、依賴項或 MySQL 的問題:\/

休眠.cfg.xml

<?xml version = "1.0" encoding = "utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
    <session-factory>


        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/carrental</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password"></property>

        <property name="connection.pool_size">10</property>

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

        <property name="current_session_context_class">thread</property>

        <property name="show_sql">true</property>
        <property name="format_sql">true</property>

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


        <!-- List of mapping files -->
        <mapping class="model.User" />



    </session-factory> </hibernate-configuration>

請參考stacktrace中的這一行:

您的SQL語法有誤; 檢查與您的MariaDB服務器版本相對應的手冊以獲取正確的語法,以在行的'type = MyISAM'附近使用

這表明您正在使用MySQL的更新版本,但使用的是舊方言。

更改

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

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

您當前的dialect產生以下內容

type=MyISAM

需要將其更改為

ENGINE=MyISAM

在創建表中由Hibernate查詢。

為了達到這個目的,您需要使用不同的 dialects 盡管使用了MySQL的更新版本,但由於MySQLDialect ,因此。

使用任一

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

要么

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

hibernate.cfg.xml文件中。

現在,您可以繼續進行create查詢,而不會出現任何dialect 錯誤

您可以在Id屬性上添加注釋並嘗試使用

@GeneratedValue(策略= GenerationType.IDENTITY)

並讓DateBase管理主鍵的增量:

AUTO_INCREMENT主鍵

希望這可以幫助!

我在Spring Boot Application中遇到了同樣的問題。

我正在使用XAMP。

我通過更改application.properties中的休眠方言解決了該問題

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

就我而言,我不小心將“desc”放在列名中,並面臨同樣的問題。

我遇到了錯誤“執行 DDL 時出錯”通過 JDBC 語句創建表 hibernate_sequence (next_val bigint) type=MyISAM”

我將 org.hibernate.dialect.MySQLDialect 更改為 org.hibernate.dialect.MySQL5Dialect 並且它有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM