1. 程式人生 > >NodeJs Mysql Cant't create more than max_prepared_stmt_count statements

NodeJs Mysql Cant't create more than max_prepared_stmt_count statements

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