目錄
第一章 問題描述
最近剛學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的一些功能,字段名比較搞怪)