Node.js: MYSQL 连接失败

5

我是node.js的新手,所以我卡在了这一点上。我尝试从这些网站学习它:Code MentorGithub

到目前为止,我已经做了以下内容:

var mysql = require('mysql');

var app = express();

// Database operations
var connection = mysql.createConnection({
  host : 'localhost',
  port : '8888',
  user : 'sharad',
  password : 'teks',
  dbName : 'FirstDataBase'
});

connection.connect(function (error) {
  if (error){
    console.error('error connecting :' + error.stack);
    return;
  }
  console.log('Connected as id :'+ connection.threadId);
});

app.get("/",function(request,response){
  console.log(' saving');
  var post  = {from:'me', to:'you', msg:'hi'};
  connection.query('INSERT INTO FirstDataBase SET ?', post, function(err, result) {
    if (err) throw err;
  });
});

app.get("/",function(request,response){
  connection.query('SELECT * from FirstDataBase', function(err, rows, fields) {
    connection.end();
    if (!err)
      console.log('The solution is: ', rows);
    else
      console.log('Error while performing Query.');
  });
});

app.listen(8888);

我在代码中打印的日志看不到。希望能得到帮助,谢谢。

编辑:

如果我删除最后一行app.listen(8888);,我会得到一个错误。

error connecting :Error: connect ECONNREFUSED 127.0.0.1:8888
    at Object.exports._errnoException (util.js:907:11)
    at exports._exceptionWithHostPort (util.js:930:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1077:14)
    --------------------
    at Protocol._enqueue (/Users/Admin/IdeaProjects/FirstNodeJS/node_modules/mysql/lib/protocol/Protocol.js:141:48)
    at Protocol.handshake (/Users/Admin/IdeaProjects/FirstNodeJS/node_modules/mysql/lib/protocol/Protocol.js:52:41)
    at Connection.connect (/Users/Admin/IdeaProjects/FirstNodeJS/node_modules/mysql/lib/Connection.js:136:18)
    at Object.<anonymous> (/Users/Admin/IdeaProjects/FirstNodeJS/app.js:40:12)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)

你的本地计算机上是否正在运行 mysql?你能在控制台上检查一下吗? - abdulbarik
抱歉,我不知道怎么检查。你能给一些想法吗? - Sharad Chauhan
我得到了这个错误信息:“sudo: mysql: command not found”,所以我猜它没有安装。 - Sharad Chauhan
在您的控制台上尝试此操作并检查 mysql --user=your usrname --password=your password 是否已启动mysql服务器。 - abdulbarik
我正在安装MAMP,我想我没有SQL。 - Sharad Chauhan
显示剩余7条评论
3个回答

3
我用以下方法解决了这个问题:
安装mysql:
npm install mysql
var mysql = require('mysql');

let connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    port: '8888',  /* port on which phpmyadmin run */
    password: 'root',
    database: 'dbname',
    socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock' //for mac and linux
});

connection.connect(function(err) {
    if (err) {
      return console.error('error: ' + err.message);
    }

    console.log('Connected to the MySQL server.');
  });

1

我通过安装MAMP并使用MAMP提供的字段解决了我的问题。

MAMP fields

Updated code


我也使用MAMP。你救了我的一天,谢谢! - Jeaf Gilbert

0

试一下这个

var connection = mysql.createConnection({
 host     : 'localhost',
 user     : 'xxxxx',
 password : 'xxxxx',
 database : 'xxx'
 });
connection.connect();

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