节点数据库查询不起作用;
我完全是新的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。