gpt4 book ai didi

mysql - Spring JPA 无法更新名称包含连字符的 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 16:13:41 34 4
gpt4 key购买 nike

我正在尝试使用 JPA 中的 spring.jpa.hibernate.ddl-auto = update 更新数据库。但它失败了,因为架构名称包含连字符。

我正在使用以下 JPA 配置:

spring.jpa.database=MYSQL
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

使用不带连字符的名称一切正常。但是,使用连字符时,我收到以下错误:

2019-03-06 17:48:14.767  INFO 17296 --- [gine[Catalina]]] org.hibernate.Version                    : HHH000412: Hibernate Core {5.2.17.Final}
2019-03-06 17:48:14.770 INFO 17296 --- [gine[Catalina]]] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2019-03-06 17:48:14.852 INFO 17296 --- [gine[Catalina]]] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
2019-03-06 17:48:15.163 INFO 17296 --- [gine[Catalina]]] com.zaxxer.hikari.HikariDataSource : HikariPool-3 - Starting...
2019-03-06 17:48:15.578 INFO 17296 --- [gine[Catalina]]] com.zaxxer.hikari.HikariDataSource : HikariPool-3 - Start completed.
2019-03-06 17:48:15.604 INFO 17296 --- [gine[Catalina]]] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
Hibernate: alter table table-xxx.tablex add column column col_name_x varchar(255)
2019-03-06 17:48:16.857 WARN 17296 --- [gine[Catalina]]] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559) [hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:580) [hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.migrateTable(AbstractSchemaMigrator.java:297) [hibernate-core-5.2.17.Final.jar:5.2.17.Final]
...
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-xxx.tablex add column col_name_x varchar(255)' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_92]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_92]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_92]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_92]

最佳答案

application.properties 中添加以下行解决了问题:

spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

最初,我认为 spring.jpa.hibernate.naming-strategy 足以处理表和模式名称,但这还不够。还有physical-strategy .

关于mysql - Spring JPA 无法更新名称包含连字符的 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55032086/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com