我有一个非常简单的程序,我创建一个Sequelize实例,然后对mysql数据库执行原始查询。 这种情况是,当MySql启动并运行时没有问题,我可以毫无问题地执行查询。 但是,当MySql没有运行时,查询不会发出任何错误,直到查询超时达到,然后它发出ETIMEOUT错误。但那不是真的发生了什么。我期望查询发出ENOTFOUND错误或类似的东西,如果mysql没有运行,所以我可以管理错误,并执行不同的操作,如果Mysql已经关闭或Mysql非常繁忙,并有一个非常大的响应时间。 我该怎么检查Mysql是否启动并运行,而不必等待超时异常。检查mysql连接的续集
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);
});
你应该监控你的MySQL服务器,所以它的所有的时间,不写应用程序代码是不必要的偏执。超时是服务器关闭和连接失败的正确行为。如果速度太慢,您可以收紧超时值。 – tadman
很好的情况下,即使MySQL服务器启动并且查询的确由于过载而发出错误,但不用说需要更好的数据库基础结构,您可以使用缓存服务器(如Redis)来加快响应速度,但如果你所有的查询都像你的例子中那样,那么它的表现就不是我写的,我的意思是,对于10.000行,它可能没问题,但是对于每行5秒或10秒查询一百万行,那么它不行。 恕我直言,你应该重新设计和研究更好的方法,你在做什么,我敢打赌,有一个更好的。 – Gntem