Travis CI 忽略 Postgres 版本规范



我已经为此砰了几个小时,但就是找不到答案。这是荒谬的。

我的.travis.yml

language: elixir
elixir: "1.6.4"
otp_release: "20.1"
addons:
  - postgresql: "9.6"
services:
  - postgresql
env:
  - MIX_ENV=test
before_script:
  - psql --version
  - psql -c 'SELECT version();' -U postgres
  - psql -c 'create database travis_ci_test;' -U postgres
  - cp config/travis_test.exs config/test.secret.exs
  - mix do ecto.migrate

创建数据库时,我总是收到以下错误:

** (Postgrex.Error) ERROR 42704 (undefined_object): type "jsonb" does not exist

显然,这两个命令显示 Postgres 版本始终为 9.2,这是trusty图像的默认值。

有一个类似的问题:postgresql 的 .travis.yml 版本设置被忽略了,但在这种情况下,OP 显然在 .travis.yml 文件中包含addons密钥两次。

我不知道在我的案件中发生了什么。

最终,将 dist 显式设置为 xenial为我解决了这个问题。

language: elixir
elixir: "1.6.4"
otp_release: "20.1"
dist: xenial
addons:
  - postgresql: "9.6"
services:
  - postgresql
env:
  - MIX_ENV=test
before_script:
  - psql --version
  - psql -c 'SELECT version();' -U postgres
  - psql -c 'create database travis_ci_test;' -U postgres
  - cp config/travis_test.exs config/test.secret.exs
  - mix do ecto.migrate

但是我仍然不知道为什么它不适用于trusty,因为Build system information输出特别指出系统上也预装了 9.6.6 版。

最新更新