我有一個非常簡單的程序,我創建一個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