MySQL历史上默认情况下使用MyISAM引擎创建表,该引擎不支持事务。后来添加了支持事务的InnoDB,但是MyISAM在相当长的一段时间内仍然是默认值。
Hibernate的方言遵循相同的默认值,因此MySQL方言的默认值为MyISAM(为了向后兼容)。
您可以通过2种方法来解决此问题:选择特定的方言,或使用特定的属性从MyISAM切换到InnoDB。
要选择一种方言,请使用
spring.jpa.database-platform来指定所需的依赖关系。
spring.jpa.database-platform=org.hibernate.dialect.MySQL57InnoDBDialect`
或设置属性使用
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
或两者的组合(因为
MySQL57InnoDBDialect现已存在,因此已弃用
hibernate.dialect.storage_engine)。
spring.jpa.database-platform=org.hibernate.dialect.MySQL57Dialectspring.jpa.properties.hibernate.dialect.storage_engine=innodb
另请参见:https :
//in.relation.to/2017/02/20/mysql-dialect-
refactoring/



