NodeJs Mysql Cant't create more than max_prepared_stmt_count statements
阿新 • • 發佈:2018-12-10
and nic javascrip nod stmt java 問號 全部 很多
這陣子碰到一個數據庫上的問題,一個剛上線不到一周的 NodeJs 接口服務裏所有的查詢全部都掛掉了,接口一直處於 pending 狀態,看了下 pm2 的日誌發現了報錯:Cant‘t create more than max_prepared_stmt_count statements,重啟 Node 服務後接口查詢恢復正常。
網上查了查資料基本上都是讓修改 max_prepared_stmt_count 的,當時覺得這個方案治標不治本就沒有采納,後來優化了一下MySQL的部分代碼就讓服務繼續跑著,後來又一周左右的時間服務又掛掉了。
CTO 也沒碰到過這個問題然後幾經搜索,最後發現了一個非常靠譜的解決方案。
語句問題,舉例:
query(`SELECT nickname FROM users WHERE id = ${id} AND age = ?`, [age])
是因為語句中引入了變量導致的,我一般只有把需要轉義的部分用問號填充,不需要轉移的都是放到變量裏的。
統一改成下面這種方式以後
query(`SELECT nickname FROM users WHERE id = ? AND age = ?`, [id, age])
截至目前為止服務跑的穩定很多,已經跑了半個月左右了。
NodeJs Mysql Cant't create more than max_prepared_stmt_count statements