Node.js MySQL模块 - throw err; // 重新抛出非MySQL错误;

6

今天我尝试了来自w3schools的node.js mysql代码片段:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "roots", // WRONG USER
  password: ""
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  /*Create a database named "mydb":*/
  con.query("CREATE DATABASE mydb", function (err, result) {
    if (err) throw err;
    console.log("Database created");
  });
});

我想学习如何处理mysql的错误,因为我的应用程序需要mysql。但是在启动app.js文件后,出现了这个错误:

为什么我无法抛出错误?


@LEQADA 为什么我把 con.connect() 包在 try-catch 中却无法捕获异常? - Null
1
你告诉应用程序有错误时就抛出错误,这也是你的应用程序正在做的事情。 - LEQADA
@LEQADA 我不应该能够捕获异常吗? - Null
您正在使用的用户连接没有访问目标数据库的权限。 - AJ X.
我的疑问是,为什么抛出的错误没有被catch捕获? 当使用“throws error”时,应该会在“catch”中捕获,但这里并没有按预期行事。 - Rinold
显示剩余3条评论
2个回答

5

因为我的应用程序需要mysql,所以我想学习如何处理mysql错误。

MySQLJS错误处理

要捕获throw的错误,请尝试使用以下代码段:

con.on('error', function(err) {
  console.log("[mysql error]",err);
});

2
将您的数据库连接修改如下:

  var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret',
  database : 'secret'

});

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

  console.log('connected as id ' + connection.threadId);
});


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