Sequelize连接被拒绝错误 JSON MySQL

4

你好,我正在尝试在我的REST服务器上创建一个/create函数。我使用C9.io工作。

var express = require("express")
var bodyParser = require("body-parser")
var cors = require("cors")
var Sequelize = require("sequelize")
var util = require("util")

var app  = express()
app.use(bodyParser.json())
 app.use(cors())

var sequelize = new Sequelize('authordb','root','',{
dialect : 'mysql',
port : 3305
})

var Author = sequelize.define('author',{
name : Sequelize.STRING,
email : { 
    type : Sequelize.STRING,
    validate : { 
        isEmail : true
    }
 }
 })

 var Message = sequelize.define('message',{
subject : Sequelize.STRING,
content : Sequelize.STRING
 })

Author.hasMany(Message, {onDelete : 'cascade'})
Message.belongsTo(Author)

  app.get('/create', function(req,res){
sequelize.sync()
    .complete(function(err){
        if (err){
            console.log(err)
        }
        else{
            res.status(201).send('created all')
        }
    })
  })

 app.post('/authors',function(req,res){
var author = req.body
Author.create(author)
    .complete(function(err){
        if (err){
            console.log(err)
        }
        else{
            res.status(201).send('created author')
        }
    })
   })

app.get('/authors/:id',function(req,res){
Author.find({
    where : {
        id : req.params.id
    },
    attributes : ['id','name','email']
})
.complete(function(err,authorDAO){
        if (err){
            console.log(err)
        }
        else{
            // console.log(authorDAO)
            // util.inspect(authorDAO)
            var author = authorDAO.dataValues
            res.status(200).send(author)
        }
  })
   })

   app.put('/authors/:id',function(req,res){
   var newValues = req.body
    Author.find({
    where : {
        id : req.params.id
    }
   })
.success(function(authorDAO) {
    authorDAO.email = newValues.email
    authorDAO.name = newValues.name
    authorDAO.save(['email','name'])
        .success(function(){
            res.status(202).send('modified author')
        })
 })
    })

    app.delete('/authors/:id',function(req,res){
   Author.find({
    where : {
        id : req.params.id
    }
 })
.success(function(authorDAO) {
    authorDAO.destroy()
        .success(function(){
            res.status(202).send('deleted author')
        })
  })

    })

  app.post('/authors/:id/messages',function(req, res) {
var message = req.body
Author.find({
    where : {
        id : req.params.id
    }
})
.success(function(authorDAO){
    Message.create(message)
        .success(function(messageDAO){
            authorDAO.addMessage(messageDAO)
                .success(function(){
                    res.status(201).send('create message')
                })
        })
     })
   })

   app.get('/authors/:id/messages',function(req, res) {
   Author.find({
    where : {
        id : req.params.id
    },
    include : {model : Message, as : 'messages'}
    })
  .success(function(authorDAO) {
    var messages = authorDAO.dataValues.messages
    res.status(200).send(messages)
   })
    })


  app.listen(8080)

错误信息为:
{ [SequelizeConnectionRefusedError: connect ECONNREFUSED]
  name: 'SequelizeConnectionRefusedError',
  message: 'connect ECONNREFUSED',
  parent: 
   { [Error: connect ECONNREFUSED]
     code: 'ECONNREFUSED',
     errno: 'ECONNREFUSED',
     syscall: 'connect',
     fatal: true },
  original: 
   { [Error: connect ECONNREFUSED]
     code: 'ECONNREFUSED',
     errno: 'ECONNREFUSED',
     syscall: 'connect',
     fatal: true } }

如果我尝试访问 https://vladws-marinescuvlad.c9.io,它可以工作,但是当我尝试访问https://vladws-marinescuvlad.c9.io/create时,在C9上出现了那个错误。有人可以帮帮我吗?非常感谢! - Michael Commons
我怎样可以更改我的连接端口?还是说,我应该做些什么? - Michael Commons
5个回答

7

就我所知,我遇到了以下错误。我的问题很简单:我没有启动我的MySQL服务器。

{ SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306
    at Utils.Promise.tap.then.catch.err (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:139:19)
    at tryCatcher (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/promise.js:690:18)
    at _drainQueueStep (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/async.js:138:12)
    at _drainQueue (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/async.js:131:9)
    at Async._drainQueues (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/async.js:147:5)
    at Immediate.Async.drainQueues (/Users/Stephen/Documents/_coding/hackReactorRemote/hrr34-fec/calendar-component/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:810:20)
    at tryOnImmediate (timers.js:768:5)
    at processImmediate [as _immediateCallback] (timers.js:745:5)
  name: 'SequelizeConnectionRefusedError',
  parent:
   { Error: connect ECONNREFUSED 127.0.0.1:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
     errno: 'ECONNREFUSED',
     code: 'ECONNREFUSED',
     syscall: 'connect',
     address: '127.0.0.1',
     port: 3306,
     fatal: true },
  original:
   { Error: connect ECONNREFUSED 127.0.0.1:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
     errno: 'ECONNREFUSED',
     code: 'ECONNREFUSED',
     syscall: 'connect',
     address: '127.0.0.1',
     port: 3306,
     fatal: true } }

解决方案是:

  1. 检查mySql服务器状态。
  2. 当我意识到它没有运行时,启动它。
    $ mysql.server status
     错误!MySQL未运行,但PID文件存在。
    $ mysql.server start
    启动MySQL
     成功!

在MySQL运行后,我的连接按预期工作。


2
如果您正在使用MAMP PRO,配置文件看起来正常,但仍然出现“SequelizeConnectionRefusedError”,请确保选中了“允许MySQL网络访问”选项。

enter image description here


0

刚刚安装了MAMP 5.7

设置不再可用,但是使用默认的MAMP mySQL端口8889进行连接。美好的一天!


0

你正在绑定到3305端口,MySQL通常在3306端口上,这可能无法解决问题,但值得一试。


-1

尝试重新启动。如果这不起作用,请尝试启动您的数据库。如果您正在使用mysql:转到bash,输入“mysql-ctl start”。希望能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接