如何修复PostgreSQL扩展"无安装脚本或更新路径"错误?
PostgreSQL扩展发布新版本时CREATE EXTENSION报错排查问题
我正在维护一个旧的PostgreSQL扩展,尝试发布新版本。运行CREATE EXTENSION IF NOT EXISTS table_version version '1.10.3';时,测试脚本失败,报错:
ERROR: extension "table_version" has no installation script nor update path for version "1.10.3"
这并非常见的脚本缺失类问题,因为测试脚本中成功安装的软件包确实包含对应的/usr/share/postgresql/10/extension/table_version--1.10.3.sql文件,目前无法确定其他导致报错的原因。
复现步骤
- 在linz-software-repository的master分支运行
nix-shell --pure --run 'docker build --tag=docker-builder .',创建Debian包构建镜像 - 在postgresql-tableversion的release-1.10分支运行
docker run --env=DRY_RUN=1 --env=GITHUB_REPOSITORY=linz/postgresql-tableversion --env=RUNNER_WORKSPACE="$(dirname "$PWD")" --volume=/var/run/docker.sock:/var/run/docker.sock docker-builder focal jq "$PWD",创建Debian包 - 运行
docker build --build-arg=RELEASE=focal --tag=tester .,创建测试运行Docker镜像 - 运行
docker run --rm --volume="${PWD}/build-area:/packages" tester ./test/ci/package-upgrade.bash 10,即可触发报错
容器内文件情况
手动执行最后一步后,Docker容器中存在以下文件:
root@939371dd2cf4:/src# ls -1 /usr/share/postgresql/10/extension/table_version* /usr/share/postgresql/10/extension/table_version--1.10.2--1.10.4.sql /usr/share/postgresql/10/extension/table_version--1.10.2dev--1.10.4.sql /usr/share/postgresql/10/extension/table_version--1.10.3--1.10.4.sql /usr/share/postgresql/10/extension/table_version--1.10.3dev--1.10.4.sql /usr/share/postgresql/10/extension/table_version--1.10.4--1.10.4.sql /usr/share/postgresql/10/extension/table_version--1.10.4--1.10.4next.sql /usr/share/postgresql/10/extension/table_version--1.10.4.sql /usr/share/postgresql/10/extension/table_version--1.10.4next--1.10.4.sql /usr/share/postgresql/10/extension/table_version--unpackaged--1.10.4.sql /usr/share/postgresql/10/extension/table_version.control
相关发现
- 本地构建的软件包版本号来自最新标签,而非
Makefile中的EXTVERSION,但创建并推送新的“1.10.4”标签并未解决问题。 apt-get --assume-yes install postgresql-10-tableversion会生成/usr/share/postgresql/10/extension/table_version--1.10.3.sql文件,但安装本地构建的.deb文件后,该文件消失。
内容的提问来源于stack exchange,提问作者l0b0
相关产品推荐
相关产品推荐

