我对NodeJS编码完全陌生,所以为了让自己更具挑战性,我也尝试通过“node-orm2”使用ORM(除非有人可以建议一个更简单的orm框架?)
我正在使用Ubuntu服务器,它也有MySQL,Apache和Linux。 Tomcat安装在它上面 - 所以我希望Node应用程序能够侦听端口3000; (Apache在端口80上,& Tomcat在端口8080上)。
我已经安装了MySQL驱动程序+ ORM模块,&它们位于'node_modules'文件夹中 - 这是我项目的子文件夹。 用户名简单地设置MySQL:“user”&密码:“密码”
当我运行应用程序时,我收到错误消息:
“连接错误:错误:连接ECONNREFUSED 127.0.0.1:3306”
哦 - 应用程序只是试图将记录写入数据库'测试',如果成功,它只是将消息“成功”返回给浏览器。
到目前为止,这是我的代码;
var http = require('http');
var orm = require('orm');
var message;
orm.connect('mysql://user:password@localhost/Test', function(err, db) {
if (err) return console.error('Connection error: ' + err);
var Test = db.define("test", {
User : String,
Num : Number,
Address : String,
Phone : Number,
State : String
});
var newRecord = {};
newRecord.User = 'Username';
newRecord.Num = Math.random();
newRecord.Address = '10 Idiot St, Somewhere';
newRecord.Phone = 12345678;
newRecord.State = 'VIC';
orm.create(newRecord, function(err, results) {
if (err) return console.console.error('DBError: ' + err);
});
message = 'Success';
});
var server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type' : 'text/plain'});
res.end('Response: ' + message);
}).listen(3000, "192.168.0.127");
console.log('Server running at http://192.168.0.127:3000/');
答案 0 :(得分:0)
ECONNREFUSED错误通常在以下情况下发生:
数据包已发出但返回错误结果(可能是防火墙,没有服务运行时没有在正确的端口上。网络故障不太可能导致此错误,因为它表明"连接& #34;已经制作但仅在之后被拒绝。
考虑到您在localhost上运行,其中一些可能无法应用。
但是,您可能不需要在特定网络适配器上侦听的HTTP服务器代码末尾的行?
您确定自己的服务正在运行吗?
答案 1 :(得分:0)
我解决了我的问题...但后来我的ORM代码发现了一个新问题;
虽然MySQL与Apache,Tomcat,Node,PHP等在同一服务器上,但我忘了我配置MySQL来监听其IP(而不是在LocalHost上监听),因为我希望它能够响应请求来自其他机器;
所以我的代码需要看起来像这样;
event.target
现在我的代码只是在这一行上抛出错误,说“create”不是ORM的方法:
orm.connect('mysql://user:password@192.168.0.127/Test', function(err, db)
答案 2 :(得分:0)
虽然这不是SQL问题,但在我的代码中还应注意:
orm.create(newRecord, function(err, results)
实际应该是:
Test.create(newRecord, function(err, results)
愚蠢的菜鸟错误,我试图使用连接对象添加记录。