Der Fehler war, dass im Code die Funktion getDebugLog() verwendet wurde, die nicht definiert war. Dadurch ist beim Erstellen des Datenbank-Pools ein Fehler aufgetreten, bevor überhaupt eine Verbindung zur Datenbank aufgebaut werden konnte. Erst nachdem die Debug-Logik entfernt wurde, konnte die Verbindung erfolgreich hergestellt werden. Das Problem lag also nicht an der Datenbank oder an den Zugangsdaten, sondern an einem fehlenden bzw. nicht importierten Hilfsfunktion im Pool-Code.
50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
import mysql from "mysql2/promise";
|
|
let cachedPool;
|
|
let connectionCount = 0;
|
|
|
|
function getPool() {
|
|
if (!cachedPool) {
|
|
cachedPool = mysql.createPool({
|
|
host: process.env.DB_HOST,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASSWORD,
|
|
database: process.env.DB_NAME,
|
|
port: process.env.DB_PORT,
|
|
connectionLimit: 20,
|
|
waitForConnections: true,
|
|
queueLimit: 10,
|
|
connectTimeout: 5000,
|
|
idleTimeout: 60000,
|
|
});
|
|
|
|
// Ereignisse für das Protokollieren der Verbindungsstatistiken
|
|
let maxUsed = 0;
|
|
|
|
cachedPool.on("acquire", () => {
|
|
connectionCount++;
|
|
// Debug-Logging entfernt
|
|
if (connectionCount > maxUsed) {
|
|
maxUsed = connectionCount;
|
|
}
|
|
});
|
|
cachedPool.on("release", () => {
|
|
connectionCount--;
|
|
});
|
|
cachedPool.on("enqueue", () => {
|
|
// Debug-Logging entfernt
|
|
});
|
|
}
|
|
return cachedPool;
|
|
}
|
|
|
|
export function closePool() {
|
|
if (cachedPool) {
|
|
cachedPool.end(() => {
|
|
console.log("All pool connections closed.");
|
|
});
|
|
cachedPool = null;
|
|
}
|
|
}
|
|
|
|
export default getPool;
|