在Eclipse Che中,连接被MySQL运行时拒绝

我试图从多机器工作区中的另一个NodeJS运行时连接到MySQL运行时的数据库。

在测试中,我打电话给目标用户列表的API http://localhost:3000/target 。 这个API中的代码在db上运行一个SELECT:

 ... exports.list = function(req, res) { req.getConnection(function(err, connection) { if (err) { console.log("MySQL " + err); } else { connection.query('SELECT id FROM target', function(err, rows) { if (err) { console.log("Error Selecting : %s ", err); } else { ... 

我从终端得到的结果是:

 get target list from http://localhost:3000/target MySQL Error: connect ECONNREFUSED 127.0.0.1:3306 

在这里我定义了到db的连接:

 var express = require('express'); var connection = require('express-myconnection'); var mysql = require('mysql'); var config = require('config'); var connectionConfig = config.get('mysql'); var connectionInstance = connection(mysql, connectionConfig, 'request'); ... app.use(connectionInstance); app.get('/', function(req, res) { res.send('Welcome'); }); app.get('/target', target.list); .... 

配置:

 { "mysql": { "host": "localhost", "user": "[user]", "password": "[password]", "database": "[database]" }, "app": { "port": 3000, "server": "http://localhost" } } 

这是我在Eclipse Che中的数据库机器的配置:

服务器配置的快照

这是我的食谱:

services: db: image: eclipse/mysql environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: petclinic MYSQL_USER: petclinic MYSQL_PASSWORD: password MYSQL_ROOT_USER: root mem_limit: 1073741824 dev-machine: image: eclipse/node mem_limit: 2147483648 depends_on: - db elasticsearch: image: florentbenoit/cdvy-ela-23 mem_limit: 2147483648

你可以分享你的recipe的多机工作区? 这将有助于调试它。

只是一个猜测:我认为您的设置的问题是使用localhost为您的数据库连接。 如果您正在运行多机器安装程序,那么数据库将运行在不同的Docker容器中,需要使用其名称来解决该问题。

摘自多机教程:

在配方中,“dev-machine”的depends_on参数允许它连接到“db”机器MySQL进程的端口3306.“dev-machine”在项目源代码中的src / main /资源/春/ data-access.properties。 该URL由jdbc.url = jdbc:mysql:// db:3306 / petclinic定义,它使用数据库机器的名称“db”和MySQL服务器的默认端口3306。

您需要在您的recipe配置打开的端口。

免责声明:我并不直接隶属于Eclipse Che,Codenvy或Red Hat,但是我们正在Eclipse Che之上构建我们自己的用于C / C ++多核优化的云IDE 。