Node+Express+MySQLを使ってデータ取得時に2回目から以下のエラーが発生しましたので、原因と解決をメモしておきたいと思います。
Can't add new command when connection is in closed state
原因
const table = "user";
module.exports = {
findAll: () => {
return new Promise((resolve, reject) => {
const db = require("../utils/db.connection");
db.query(
`SELECT * FROM ${table} WHERE enabled = 1`,
(err, result, fields) => {
if (err) {
reject(err);
} else {
console.log(result);
resolve(result);
}
}
);
db.end(); // こちら
});
},
上記の「こちら(db.end())」のように毎回クエリ実行後にDBを閉じましたが、Node.js勝手に閉じ始めてくれるらしいです。
詳しい内容はこちらをご参考ください。
解決
上記のソースコードで「db.end()」を全部削除することで正常に動きました。直したコードが以下となります。
const table = "user";
const db = require("../utils/db.connection");
module.exports = {
findAll: () => {
return new Promise((resolve, reject) => {
db.query(
`SELECT * FROM ${table} WHERE enabled = 1`,
(err, result, fields) => {
if (err) {
reject(err);
} else {
console.log(result);
resolve(result);
}
}
);
});
},
