Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse中MySQL运行时的连接被拒绝_Mysql_Node.js_Docker_Eclipse Che - Fatal编程技术网

Eclipse中MySQL运行时的连接被拒绝

Eclipse中MySQL运行时的连接被拒绝,mysql,node.js,docker,eclipse-che,Mysql,Node.js,Docker,Eclipse Che,我正在尝试从数据库中的另一个NodeJS运行时连接到MySQL运行时中的db 在测试中,我调用APIhttp://localhost:3000/target显示目标用户列表。此API中的代码在数据库上运行SELECT: ... exports.list = function(req, res) { req.getConnection(function(err, connection) { if (err) { console.log(

我正在尝试从数据库中的另一个NodeJS运行时连接到MySQL运行时中的db

在测试中,我调用API
http://localhost:3000/target
显示目标用户列表。此API中的代码在数据库上运行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中db机器的配置:

这是我的食谱:

服务:
db:
图片:eclipse/mysql
环境:
MYSQL\u ROOT\u密码:PASSWORD
MYSQL_数据库:petclinic
MYSQL_用户:petclinic
MYSQL\u密码:密码
MYSQL\u ROOT\u用户:ROOT
成员限额:1073741824
开发计算机:
图片:eclipse/node
成员限额:2147483648
取决于:
-分贝
弹性搜索:
图片:florentbenoit/cdvy-ela-23

mem_limit:2147483648

您能分享您的多机工作区
配方吗?这将有助于调试它

只是一个猜测:我认为您的设置的问题在于对db连接使用
localhost
。如果正在运行多机设置,则db正在不同的docker容器中运行,需要通过其名称进行寻址

摘自多机教程:

在配方中,“dev machine”的dependens_参数允许 连接到“db”机器MySQL进程的端口3306。这个 “dev machine”在项目中配置其MySQL客户端连接 源代码位于src/main/resources/spring/data-access.properties。这个 url由jdbc定义。url=jdbc:mysql://db:3306/petclinic 哪个使用 数据库计算机的名称“db”和MySQL服务器的默认端口 3306

您需要在
配方中配置打开的端口


免责声明:我不是EclipseChe、Codenvy或Red Hat的直接成员,但我们正在EclipseChe的基础上构建自己的产品

您能分享您的多机工作区
配方吗?这将有助于调试它

只是一个猜测:我认为您的设置的问题在于对db连接使用
localhost
。如果正在运行多机设置,则db正在不同的docker容器中运行,需要通过其名称进行寻址

摘自多机教程:

在配方中,“dev machine”的dependens_参数允许 连接到“db”机器MySQL进程的端口3306。这个 “dev machine”在项目中配置其MySQL客户端连接 源代码位于src/main/resources/spring/data-access.properties。这个 url由jdbc定义。url=jdbc:mysql://db:3306/petclinic 哪个使用 数据库计算机的名称“db”和MySQL服务器的默认端口 3306

您需要在
配方中配置打开的端口


免责声明:我不是EclipseChe、Codenvy或Red Hat的直接成员,但我们正在EclipseChe的基础上构建自己的产品

正如您从我在问题中添加的配方中所看到的,有一个'depends_on'参数让dev机器连接到db机器。我还需要做些什么吗?是的,您需要更改配置文件以使用
db
机器而不是localhost:
{“mysql”:{“host”:“db”}
它可以工作!我认为将localhost和real端口映射到eclipseche主机名和端口是工作区配置的问题,而不涉及实际的应用程序代码。相反,在应用程序的配置文件中,我必须按照您的建议将“localhost”更改为“db”。很高兴听到这个消息!正如您从我在问题中添加的配方中所看到的,有一个'depends_on'参数让dev机器连接到db机器。我还需要做些什么吗?是的,您需要更改配置文件以使用
db
机器而不是localhost:
{“mysql”:{“host”:“db”}
它可以工作!我认为将localhost和real端口映射到eclipseche主机名和端口是工作区配置的问题,而不涉及实际的应用程序代码。相反,在应用程序的配置文件中,我必须按照您的建议将“localhost”更改为“db”。很高兴听到这个消息!