我有这个由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
);
和我的春季启动配置:
#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 EXTENSION”位之外,我的所有脚本都正常工作。我可以使用相同的凭据登录数据库并成功手动运行它。但是通过FlyWay:没办法。想知道为什么
这应该工作得很好并且被广泛使用。确保您的用户具有执行此操作所需的权限。
加载扩展需要具有创建其组件对象所需的相同权限。对于大多数扩展,这意味着需要超级用户或数据库所有者权限。运行CREATE EXTENSION的用户将成为扩展的所有者,以便以后进行权限检查,以及扩展程序脚本创建的任何对象的所有者。
阅读文档:CREATE EXTENSION