【问题标题】:FlywayDB not creating extensionFlywayDB 未创建扩展
【发布时间】:2019-07-29 22:56:11
【问题描述】:

我有这个由 FlywayDB 获取的启动脚本:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- clean up
DROP table IF EXISTS tenants;

-- create table
CREATE TABLE tenants (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), name VARCHAR(64) NOT NULL
);

还有我的 Spring Boot 配置:

#FLYWAY
spring.flyway.url=jdbc:postgresql://localhost:5432/tenant?currentSchema=public
spring.flyway.user=postgres
spring.flyway.password=secret
spring.flyway.baseline-on-migrate=true

除了“CREATE EXTENTION”位之外,我所有的脚本都运行良好。 我可以使用相同的凭据登录数据库并成功手动运行它。但通过 FlyWay:没办法。想知道为什么

【问题讨论】:

  • 只允许超级用户创建扩展。您是否以超级用户身份运行 Flyway 脚本?
  • 你得到的错误是什么?
  • 没有错误:只是没有创建扩展。我会在周围挖掘更多。我相信这是一个权限问题。

标签: postgresql spring-boot flyway


【解决方案1】:

加载扩展程序需要相同的权限 需要创建其组件对象。对于大多数扩展,这 表示需要超级用户或数据库所有者权限。那个用户 运行 CREATE EXTENSION 成为扩展的所有者 以后的权限检查,以及创建的任何对象的所有者 通过扩展的脚本。

阅读文档:CREATE EXTENSION

【讨论】:

  • 在我的 dockerfile 中,我使用的是这个用户:postgresql,密码:secret。我用同一个来创建“数据库”。但是当谈到这个扩展时......我错过了一些东西
【解决方案2】:

这应该可以正常工作并且被广泛使用。确保您的用户拥有执行此操作所需的权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多