1. 程式人生 > >解決SpringJPA不能儲存外來鍵,只儲存索引的問題

解決SpringJPA不能儲存外來鍵,只儲存索引的問題

目錄

第一章 問題描述

第二章 解決問題

第三章 解決後的結果


第一章 問題描述

最近剛學springJpa,正在搞一對多與多對多的關係,配置完關係後,並執行如下的資料庫修改語句後,發現數據庫裡只生成了索引並沒有生成外來鍵.

查閱資料後,我發現下面的資料庫修改語句就是增加外來鍵的語句沒有錯,於是我嘗試了在Nacvicat中執行查詢命令增加外來鍵,在Nacvicat中手動增加外來鍵,以及在DOS視窗下增加外來鍵都失敗了.

狀況大都是無報錯,但是建立的外來鍵都消失了,只能在索引找到之前建立的相關外來鍵

 

第二章 解決問題

經過在網上查詢後,發現了此篇部落格

https://blog.csdn.net/hxfghgh/article/details/80147986

解釋道:mysql引擎的原因,mysql主要使用兩種引擎:myisam以及innodb,而myisam區別於innodb的一個明顯不同是myisam不能建立外來鍵,因此建立外來鍵不能成功。

於是我查看了下我資料的引擎,具體命令可參照https://www.cnblogs.com/zhming26/p/6322353.html

首先查看了資料庫的預設引擎

發現就是innodb沒錯,於是我又檢視看具體表user_authority的引擎

問題確定,就是因為儲存引擎的問題導致外來鍵不能建立

因為我的表是SpringJpa自動建立的,所以要修改SpringJpa的配置,所以在application.properties中新增如下配置

spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

刪除如下配置即可(為啥刪除這個還有待思考).

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

 

第三章 解決後的結果

再次執行程式,索引與外來鍵都得以建立(為了測試jpa的一些功能,欄位名比較搞怪)