在sequelize中检查mysql连接

我有一个非常简单的程序,我创build一个Sequelize实例,然后我执行一个MySQL数据库的原始查询。 这种情况是,当MySql启动并运行没有问题,我可以执行查询没有问题。 但是,当MySql没有运行,那么查询不会发出任何错误,直到查询超时已经达到,然后它发出一个ETIMEOUT错误。 但那不是真的发生了什么事情。 我希望查询发出ENOTFOUND错误或类似的东西,如果mysql不运行,所以我可以pipe理错误,并执行不同的操作,如果Mysql已经closures或Mysql非常繁忙,并有一个非常大的响应时间。 我要做些什么来检查Mysql是否启动并运行,而不必等待超时exception。

sequelize = new Sequelize(db_name, db_user, db_pass, opts); sequelize.query('SELECT * FROM some_table').success(function(result) { console.log(result); }).error(function(err) { console.log(err); }); 

截至Sequelize (即3.3.2 )的最新版本,可以使用authenticate来检查连接:

 var sequelize = new Sequelize("db", "user", "pass"); sequelize.authenticate().then(function(errors) { console.log(errors) }); 

authenticate只需运行SELECT 1+1 AS result查询来检查数据库连接。

您将不会在密码validation错误中看到错误。

从这里的续集文档:

您可以像这样使用.authenticate()函数来testing连接。

 sequelize .authenticate() .then(function(err) { console.log('Connection has been established successfully.'); }) .catch(function (err) { console.log('Unable to connect to the database:', err); }); 

请检查“wait_timeout”系统variables,如果它被重置为一些微不足道的值