Risposta breve. Aggiungi mysql2 al tuo bot discord.js, crea un solo pool di connessioni dalle variabili d'ambiente all'avvio del bot ed esegui ogni query attraverso di esso con segnaposto ?. Su PlayNHost ogni piano per bot include un database MySQL: crealo nella pagina Database, incolla i suoi dati nel riquadro Ambiente e il codice qui sotto funziona così com'è. Il database accetta connessioni dai tuoi server PlayNHost e da phpMyAdmin, non dal tuo computer. Abbiamo testato questo codice il 6 novembre 2026 con discord.js 14.28.1, mysql2 3.24.6 e Node.js 22, su MariaDB 10.11 con un account database configurato come il nostro (20 connessioni, limite di 120 secondi per query): l'avvio, la tabella e il gestore di /warn, ma non un vero login su Discord.
Apri il tuo server bot nel pannello e clicca su Database.
Clicca su Nuovo database. Un'Etichetta è facoltativa; Verrà creato come mostra il nome completo. Clicca su Crea database.
Si apre la pagina del nuovo database (più avanti, cliccalo in I tuoi database). La sua scheda Connessione mostra Host, Porta, Database, Nome utente e Password. Sotto Config pronta all’uso, Config per contiene uno snippet Node.js (mysql2) con gli stessi valori già compilati.
2. Metti i dati in Ambiente
Apri la pagina Bot, il riquadro Ambiente, e clicca su Incolla un file .env.
Incolla queste cinque righe con i valori della scheda Connessione:
Due righe tengono vivo il bot. setContexts(InteractionContextType.Guild) e il controllo !interaction.guildId impediscono /warn in un messaggio privato, dove non c'è nessun server a cui associare l'avvertimento. Il try/catch risponde con un breve messaggio privato quando una query fallisce. Senza, discord.js passa l'errore al suo evento error e, se nessuno lo ascolta, Node.js ferma il bot. Nel nostro test abbiamo eliminato la tabella ed eseguito /warn: il bot ha registrato ER_NO_SUCH_TABLE, ha risposto Could not save the warning. Try again later. ed è rimasto in esecuzione.
4. Avvialo
Carica index.js e package.json in Files. Non caricare node_modules.
Premi Avvia e apri Console. All'avvio vengono installati i pacchetti, poi compaiono [PlayNHost] Starting your bot, Database ready e Logged in as ....
Su Discord, scrivi /warn. Per vedere le righe, apri la pagina del database e clicca su Apri in phpMyAdmin.
I limiti che contano per il tuo pool
20 connessioni contemporanee per utente del database. Conta ogni processo che usa lo stesso accesso: il tuo bot, una sua seconda copia, una dashboard. La connessione 21 viene rifiutata con ER_USER_LIMIT_REACHED. Nel nostro test un pool con connectionLimit: 30 è fallito con quell'errore non appena 30 query sono partite insieme. Un pool da 5 non apre mai più di 5 connessioni: le query in più aspettano una connessione libera.
Una query che dura più di 120 secondi viene interrotta. MariaDB la termina con l'errore 1969, Query execution was interrupted (max_statement_time exceeded). Nel nostro test è successo dopo 120.03 secondi. Le query di un bot di solito durano millisecondi, quindi questo riguarda solo una query fuori controllo.
I backup del server non includono il database. Esportalo da phpMyAdmin ogni tanto.
Errori e cosa significano
Questi sono i messaggi esatti che mysql2 ha dato nel nostro test:
ER_ACCESS_DENIED_ERROR ... Access denied for user: DB_USER o DB_PASSWORD errati. Dopo Reimposta password nella scheda Connessione, la vecchia password smette di funzionare subito: sostituisci DB_PASSWORD e riavvia il bot.
ENOTFOUND: DB_HOST è scritto male, quindi il nome non esiste.
ETIMEDOUT: nulla ha risposto entro 10 secondi, l'attesa predefinita di mysql2. Qualunque sia il messaggio, una connessione dal tuo computer fallisce: il database accetta solo connessioni dai server PlayNHost e da phpMyAdmin.
ER_USER_LIMIT_REACHED ... has exceeded the 'max_user_connections' resource (current value: 20): troppe connessioni aperte, vedi i limiti qui sopra. Di solito è una nuova connessione per ogni comando che non viene mai chiusa, oppure una seconda copia del bot.
Installare discord.js e mysql2 da zero ha toccato un picco di 147 MB di memoria (cache dei file esclusa) nel nostro test, in un container limitato a 512 MB come il nostro piano bot più piccolo. Dall'avvio fino al rifiuto del nostro token di prova da parte di Discord, il bot ha usato al massimo 31 MB; aveva creato la tabella ma non aveva mai effettuato il login. Un bot connesso e presente in molti server usa di più: Di quanta RAM ha bisogno un bot Discord?
Utilizziamo i cookie per far funzionare il sito, capire come viene usato e misurare il nostro marketing. Puoi accettare tutto, accettare solo i cookie essenziali o scegliere per categoria.Utilizziamo i cookie per far funzionare il sito, capire come viene usato e misurare il nostro marketing. Qui sono attivi per impostazione predefinita: puoi disattivare ciò che non desideri.Leggi la nostra informativa sulla privacy