导致knex迁移的原因:Shippable中最新失败?

时间:2016-04-07 00:54:30

标签: knex.js shippable-ci

我正致力于在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数据库,但用户名和主机是错误的。

知道我在这里可能缺少什么吗?

1 个答案:

答案 0 :(得分:0)

我最终输入了一张支持票,得到了回复:

  

新默认图片中的数据库没有"可发货"用户,所以MySQL注意到有人试图以不存在的用户身份进行连接,并试图查看是否可以在没有用户名的情况下进行连接。在连接或以root用户身份连接之前,您可以通过将mysql -e "GRANT ALL ON *.* TO shippable@localhost IDENTIFIED BY ''; FLUSH PRIVILEGES;"添加到shippable.yml部分中的ci来创建可发送用户。

我当时阅读的所有文档都有shippable用户。第一步是找到正确的文档,我想。