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>;
浙公网安备 33010602011771号