【发布时间】:2017-05-04 04:35:35
【问题描述】:
您好,我已经使用 nodejs 和 loopback 创建了示例应用程序。什么时候 我尝试使用“db”内存来工作。当我添加 lb 数据源时 抛出mysql错误。请帮助我如何解决它。
datasource.json
{
"db": {
"name": "db",
"connector": "memory"
},
"mysql": {
"host": "ec2-52-35-183-50.us-west-2.compute.amazonaws.com",
"port": "3307",
"url": "",
"database": "medola",
"password":"xxyyxx@123",
"name": "mysql",
"user": "root",
"connector": "mysql"
}
}
堆栈跟踪:
Connection fails: Error: connect ECONNREFUSED 172.31.24.147:3307 It will be retried for the next request. events.js:160
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED 172.31.24.147:3307
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
--------------------
at Protocol._enqueue (/home/ec2-user/medola/node_modules/mysql/lib/protocol/Protocol.js:141:48)
at Protocol.handshake (/home/ec2-user/medola/node_modules/mysql/lib/protocol/Protocol.js:52:41)
at PoolConnection.connect (/home/ec2-user/medola/node_modules/mysql/lib/Connection.js:130:18)
at Pool.getConnection (/home/ec2-user/medola/node_modules/mysql/lib/Pool.js:48:16)
at MySQL.connect (/home/ec2-user/medola/node_modules/loopback-connector-mysql/lib/mysql.js:89:17)
at Object.initializeDataSource [as initialize] (/home/ec2-user/medola/node_modules/loopback-connector-mysql/lib/mysql.js:43:28)
at DataSource.setup (/home/ec2-user/medola/node_modules/loopback-datasource-juggler/lib/datasource.js:352:19)
at new DataSource (/home/ec2-user/medola/node_modules/loopback-datasource-juggler/lib/datasource.js:121:8)
at Registry.createDataSource (/home/ec2-user/medola/node_modules/loopback/lib/registry.js:355:12)
at dataSourcesFromConfig (/home/ec2-user/medola/node_modules/loopback/lib/application.js:440:19)
at EventEmitter.app.dataSource (/home/ec2-user/medola/node_modules/loopback/lib/application.js:235:14)
at /home/ec2-user/medola/node_modules/loopback-boot/lib/executor.js:190:9
at /home/ec2-user/medola/node_modules/loopback-boot/lib/executor.js:281:5
at Array.forEach (native)
at forEachKeyedObject (/home/ec2-user/medola/node_modules/loopback-boot/lib/executor.js:280:20)
at setupDataSources (/home/ec2-user/medola/node_modules/loopback-boot/lib/executor.js:180:3)
【问题讨论】:
-
您是否使用 EC2 实例来托管该 MySQL 数据库?
-
如果没有其他信息很难回答。根据主机链接,您的 MySQL 数据库位于 EC2 上。您在哪里部署了 Loopback 应用程序?它在另一个 EC2 实例上吗?也许您没有从该实例启用 Internet 访问,或者 MySQL 实例上的端口 3307 已关闭。您能否提供有关您的设置的更多信息?
-
@IvanSchwarz 我已经在 ec2 实例上安装了 xampp,它包含内置的 mysql。当我启动我的 xampp 时,它将在端口 3306 上启动 mysql。在我的本地 pc 中,我安装了相同的用于使用我的数据源配置 db。
-
您的数据源配置指向端口 3307,但如果 mysql 在该端口上运行,它应该是 3306。第二件事是,如果您从本地计算机定位该端口,则必须在 EC2 实例上打开 3306 端口。还要确保您的 MySql 服务器接受远程连接。
-
@A.Z.是的,当它不起作用时。我只是手动将端口从 3306 默认端口更改为 3307 端口。我允许我的 aws 实例上的所有流量。我能够通过 phpmyadmin 通过 EC2 链接连接到 mysql。只有代码无法通过 datasource.json 代码进行连接。我还对 mysql 配置进行了更改以允许远程连接
标签: mysql node.js xampp loopbackjs loopback