Flyway适配达梦数据库报错-5504

环境说明

  • 达梦数据库:
    • 版本:DM8
    • 使用的模式和账号都是SYSDBA001
  • Flyway版本:6.4.4

错误日志

Caused by: org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to check whether schema "SYSDBA001" is empty
---------------------------------------------------
SQL State  : 28000
Error Code : -5504
Message    : No select privilege on object [DBA_SEGMENTS]
	at org.flywaydb.core.internal.database.base.Schema.empty(Schema.java:100) ~[flyway-core-6.4.4.jar!/:na]
	at org.flywaydb.core.Flyway$1.execute(Flyway.java:173) ~[flyway-core-6.4.4.jar!/:na]
	at org.flywaydb.core.Flyway$1.execute(Flyway.java:162) ~[flyway-core-6.4.4.jar!/:na]
	at org.flywaydb.core.Flyway.execute(Flyway.java:524) ~[flyway-core-6.4.4.jar!/:na]
	at org.flywaydb.core.Flyway.migrate(Flyway.java:162) ~[flyway-core-6.4.4.jar!/:na]
	at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65) ~[spring-boot-autoconfigure-2.3.12.RELEASE.jar!/:2.3.12.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1858) ~[spring-beans-5.2.15.RELEASE.jar!/:5.2.15.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1795) ~[spring-beans-5.2.15.RELEASE.jar!/:5.2.15.RELEASE]
	... 27 common frames omitted
Caused by: dm.jdbc.driver.DMException: No select privilege on object [DBA_SEGMENTS]
	at dm.jdbc.driver.DBError.throwException(DBError.java:711) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.a.b.o.x(MSG.java:591) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.a.b.o.C(MSG.java:526) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.a.b.o.B(MSG.java:507) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.a.a.a(DBAccess.java:245) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.a.a.a(DBAccess.java:944) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.a.a.a(DBAccess.java:813) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.driver.DmdbPreparedStatement.executeInner(DmdbPreparedStatement.java:463) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.driver.DmdbPreparedStatement.do_executeQuery(DmdbPreparedStatement.java:568) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at dm.jdbc.driver.DmdbPreparedStatement.executeQuery(DmdbPreparedStatement.java:1587) ~[DmJdbcDriver18-8.1.2.192.jar!/:na]
	at org.flywaydb.core.internal.jdbc.JdbcTemplate.queryForStringList(JdbcTemplate.java:112) ~[flyway-core-6.4.4.jar!/:na]
	at org.flywaydb.core.internal.database.dm.DMSchema$ObjectType.getObjectTypeNames(DMSchema.java:743) ~[flyway-core-6.4.4.jar!/:na]
	at org.flywaydb.core.internal.database.dm.DMSchema$ObjectType.supportedTypesExist(DMSchema.java:753) ~[flyway-core-6.4.4.jar!/:na]
	at org.flywaydb.core.internal.database.dm.DMSchema.doEmpty(DMSchema.java:73) ~[flyway-core-6.4.4.jar!/:na]
	at org.flywaydb.core.internal.database.base.Schema.empty(Schema.java:98) ~[flyway-core-6.4.4.jar!/:na]
	... 34 common frames omitted

原因分析

数据库SQL版本管理中间件flyway要去查询下自己的flyway执行记录表,发现没有权限去查询SYSDBA001模式下的表数据。

解决方案

给SYSDBA001账号分配SELECT权限,指令如下:
GRANT SELECT ON DBA_SEGMENTS TO <username>;

posted @ 2023-04-20 19:02  小舟杂笔  阅读(1557)  评论(1)    收藏  举报