我正在尝试使用 timescaledb 扩展,所以我正在运行他们的官方 docker image。
在我的 docker 入口点文件的最后一行,我运行:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
我验证它可以\dx
在 psql 中使用。一旦我尝试使用扩展程序,我就会得到:
没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
我发现我必须通过exec
ing 到 psql 并运行来手动添加它CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
我的入口点有什么问题?为什么我必须在容器构建并运行后手动创建扩展?
编辑:这是完整的入口点脚本:
#!/bin/bash
set -e
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER test_user PASSWORD 'password123';
ALTER USER test_user WITH SUPERUSER; --needed to create timescaledb extension
CREATE DATABASE testdb OWNER test_user;
GRANT ALL PRIVILEGES ON DATABASE testdb TO test_user;
CREATE DATABASE tsdb OWNER test_user;
GRANT ALL PRIVILEGES ON DATABASE tsdb TO test_user;
ALTER USER test_user CREATEDB;
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
EOSQL