【问题标题】:Liquibase - Spring Boot - DATABASECHANGELOG creation failingLiquibase - Spring Boot - DATABASECHANGELOG 创建失败
【发布时间】:2021-07-28 22:31:10
【问题描述】:

我正在为 Sybase ASE 使用带有 spring boot 的 liquibase,并且在应用程序启动时出现此错误 -

Caused by: java.sql.SQLException: Permission denied, database db_local, owner dbo. You need the following permission(s) to run this command: CREATE TABLE

这可能是因为我们使用不同的凭据进行登录,但为了执行我们定义的更改集,将代理设置为具有所有权限的另一个用户 -

  <changeSet author="12345" id="set-dbo-alias" runAlways="true" dbms="sybase">
    <comment> This should run always as the first step </comment>
    <sql>SET quoted_identifier OFF</sql>
    <sql>set proxy dbMainUser</sql>
    <sql>set replication off</sql>
  </changeSet>

但是,在启动时它正在尝试创建 DATABASECHANGELOG 表,这似乎是在执行我设置代理的更改集之前发生的。我不知道如何将代理设置为 dbMainUser。任何建议或指导都会有所帮助。

【问题讨论】:

    标签: spring-boot sybase liquibase


    【解决方案1】:

    是的,Liquibase 创建 DATABASECHANGELOGLOCK 和 DATABASECHANGELOG 表作为第一步 - 在从更改日志表中知道要运行什么或不运行什么之前。

    目前无法直接指定“setup sql”。

    如果您的 Java 技能符合要求,您可以创建一个基于 SybaseDatabase 类的扩展,该类会覆盖 setConnection() 方法并在此时调用连接上所需的任何自定义 SQL。

    否则,如果您手动创建 DATABASECHANGELOG 和 DATABASECHANGELOGLOCK 表,Liquibase 将使用它们而不是尝试重新创建它们。不过,非代理用户需要权限才能在这些表中插入/更新。

    【讨论】:

    猜你喜欢
    • 2016-09-07
    • 2019-03-05
    • 2020-11-12
    • 2020-09-21
    • 2021-06-28
    • 2017-06-01
    • 1970-01-01
    • 2021-08-03
    • 2020-08-26
    相关资源
    最近更新 更多