解决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的一些功能,字段名比较搞怪)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值