节点数据库查询不起作用;

我完全是新的NodeJS编码,所以使自己更具挑战性我也试图通过“ node-orm2 ”使用ORM(除非有人可以build议一个更简单的ORM框架?)

我正在使用一个Ubuntu服务器,它也安装了MySQL,Apache和Tomcat – 所以我想Node应用程序在端口3000上侦听; (Apache在80端口,&Tomcat在8080端口)。

我已经安装了MySQL Driver + ORM模块,它们正确地位于“node_modules”文件夹中 – 这是我的项目的子文件夹。 MySQL设置简单的用户名:“用户”和密码:“密码”

当我运行应用程序时,我收到错误消息:
“连接错误:错误:连接ECONNREFUSED 127.0.0.1:3306”

哦 – 应用程序只是试图写一个logging到数据库'testing',如果它的成功,它只是返回消息'成功'的浏览器。

这是我的代码到目前为止;

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/'); 

ECONNREFUSED错误通常在以下情况下发生:

数据包被发送出去,但返回的错误结果(可能是防火墙,没有运行的服务没有在正确的端口上。networking故障不太可能导致这个错误,因为它表明“连接”已经被做出来之后,拒绝)。

考虑到你正在本地主机上运行,​​其中一些可能是不适用的。

但是,在特定networking适配器上侦听的HTTP服务器代码末尾的行可能不是必需的?

你确定你的服务正在运行?

我解决了我的问题,但后来发现与我的ORM代码的一个新问题;

虽然MySQL与Apache,Tomcat,Node,PHP等在同一台服务器上,但我忘记了我configuration了MySQL来监听它的IP(而不是侦听LocalHost),因为我希望它能够响应来自其他机器的请求;

所以我的代码需要看起来像这样;

 orm.connect('mysql://user:password@192.168.0.127/Test', function(err, db) 

现在我的代码只是在这一行上抛出一个错误,说“创build”不是ORM的一种方法:

 orm.create(newRecord, function(err, results) 

虽然这不是SQL问题,但也应该指出,在我的代码中:

  orm.create(newRecord, function(err, results) 

实际上应该是:

 Test.create(newRecord, function(err, results) 

愚蠢的菜鸟错误,我试图使用连接对象添加logging。