为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:centos
【CPU】:4
【问题描述】*:springboot + jpa + Dm7JdbcDriver18+ hibernate5
配置项:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DmDialect
spring.datasource.driver-class-name= dm.jdbc.driver.DmDriver
spring.datasource.url= jdbc:dm://localhost:5236/DMPP?schema=CLOUDZS
spring.datasource.username= DMPP
Caused by: org.hibernate.exception.GenericJDBCException: Error accessing table metadata
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.convertSQLException(InformationExtractorJdbcDatabaseMetaDataImpl.java:98)
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTables(InformationExtractorJdbcDatabaseMetaDataImpl.java:341)
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTablesInformation(DatabaseInformationImpl.java:120)
at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:65)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1250)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391)
… 153 common frames omitted
Caused by: java.sql.SQLException: There is not a table without a schema!
at dm.jdbc.driver.DmdbDatabaseMetaData_bs.getTables(DmdbDatabaseMetaData_bs.java:3215)
at dm.jdbc.driver.DmdbDatabaseMetaData.do_getTables(DmdbDatabaseMetaData.java:5273)
at dm.jdbc.filter.FilterChain.DatabaseMetaData_getTables(FilterChain.java:7638)
at dm.jdbc.driver.DmdbDatabaseMetaData.getTables(DmdbDatabaseMetaData.java:1913)
at com.zaxxer.hikari.pool.ProxyDatabaseMetaData.getTables(ProxyDatabaseMetaData.java:62)
at com.zaxxer.hikari.pool.HikariProxyDatabaseMetaData.getTables(HikariProxyDatabaseMetaData.java)
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTables(InformationExtractorJdbcDatabaseMetaDataImpl.java:329)
… 165 common frames omitted
基于上面的回答做补充:
docker下dm8拉起的命令是什么?如果使用了端口映射,那url连接串应该使用宿主机的IP加映射出的端口进行连接。
例如:
宿主机IP地址为:
192.168.1.100
拉起的命令为:
docker run -d -p 15236:5236 … dm8:v8.1.1
url的写法便是:
jdbc:dm://192.168.1.100:15236
https://eco.dameng.com/community/article/f6fdf09087863e45baf96442b5216d86,参考下这张帖。先创建表空间和用户,默认会生成一个与用户名现名的模式名。在代码里就用你新创建的用户与密码登录,在这个模式下操作。
在达梦数据库中可以认为没有schema的概念,操作习惯上建议使用对应用户访问默认对应的模式,尽量不要一个用户对应多个模式。
有三点需要注意:
1、在达梦数据库中,没有连接串后面“/模式”的用法,只是语法不报错,并不会连接对应模式。jdbc:dm://localhost:5236/DMPP
2、如果是一个用户对应多个模式,可以使用“?schema=CLOUDZS”参数来切换用户默认模式
3、如果指定模式不是登录用户的,则不能切换