Eclipse中MySQL运行时的连接被拒绝
我正在尝试从数据库中的另一个NodeJS运行时连接到MySQL运行时中的db 在测试中,我调用APIEclipse中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(
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”。很高兴听到这个消息!