0

Shippable で CI 環境を立ち上げる作業を行っています。テスト データベースがあり、それに対して移行を実行する必要があるところですが、意味をなさないエラーが発生します。

実行されるビルドステップは次のとおりです。

(cd www && NODE_ENV=test knex --knexfile ./config/knexplus.js migrate:latest)

出力は次のとおりです。

Working directory changed to ~/src/github.com/org/api/www/config
Using environment: test
Knex:warning - Pool2 - Error: Pool was destroyed
Knex:Error Pool2 - Error: ER_DBACCESS_DENIED_ERROR: Access denied for user ''@'localhost' to database 'my_test'
Knex:Error Pool2 - Error: ER_DBACCESS_DENIED_ERROR: Access denied for user ''@'localhost' to database 'my_test'
Error: Pool was destroyed

誤解しないでほしいのですが、メッセージの内容は理解できますが、なぜそれを受け取るのかはわかりません。移行を実行する前に、ビルドでknexplus.jsファイルの内容をダンプします。

(cd www && cat ./config/knexplus.js)
  'use strict';

  exports.vagrant = exports.staging = exports.production = {
      client: 'mysql',
      connection: {
          host: '127.0.0.1',
          port: '3306',
          user: 'shippable',
          password: '',
          database: 'mine',
          timezone: 'UTC',
          charset: 'utf8',
          debug: false
      },
      migrations: {
          tableName: '_migrations',
          directory: '../db/migrations'
      },
      seeds: {
          directory: '../db/seeds'
      }
  };

  exports.test = {
      client: 'mysql',
      connection: {
          host: '127.0.0.1',
          port: '3306',
          user: 'shippable',
          password: '',
          database: 'my_test',
          timezone: 'UTC',
          charset: 'utf8',
          debug: false
      },
      migrations: {
          tableName: '_migrations',
          directory: '../db/migrations'
      },
      seeds: {
          directory: '../db/seeds'
      }
  };

私が気付いたのは、my_testデータベースを参照しているため正しい構成を取得していることをエラー メッセージが示しているように見えますが、ユーザー名とホストが間違っているということです。

ここで何が欠けているのでしょうか?

4

1 に答える 1

0

最終的にサポート チケットを入力したところ、次のような応答がありました。

新しいデフォルト イメージのデータベースには「発送可能な」ユーザーがいないため、MySQL は誰かが存在しないユーザーとして接続しようとしていることに気づき、ユーザー名なしで接続できるかどうかを確認しようとします。接続する前にセクションに追加mysql -e "GRANT ALL ON *.* TO shippable@localhost IDENTIFIED BY ''; FLUSH PRIVILEGES;"して出荷可能なユーザーを作成するか、root ユーザーとして接続することができます。shippable.ymlci

当時私が読んでいたすべてのドキュメントには、shippableユーザーが含まれていました。最初のステップは、適切なドキュメントを見つけることだと思います。

于 2016-04-08T10:45:45.033 に答える