[英]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.