Open je botserver in het paneel en klik op Databases.
Klik op Nieuwe database. Een Weergavenaam is optioneel; Wordt aangemaakt als toont de volledige naam. Klik op Database aanmaken.
De pagina van de nieuwe database opent (later klik je hem aan onder Jouw databases). Op de kaart Verbinding staan Host, Poort, Database, Gebruikersnaam en Wachtwoord. Onder Kant-en-klare config heeft Config voor een snippet Python (aiomysql) met dezelfde waarden al ingevuld.
2. De gegevens in Omgeving zetten
Open de pagina Bot, het paneel Omgeving, en klik op Een .env-bestand plakken.
Plak deze vijf regels met de waarden van de kaart Verbinding:
Druk op Starten en open Console. Bij het starten worden de pakketten uit requirements.txt geïnstalleerd, daarna zie je [PlayNHost] Starting your bot en Database ready.
Typ in Discord /warn. Om de rijen te bekijken, open je de pagina van de database en klik je op Openen in phpMyAdmin.
De autocommit-valkuil
aiomysql opent verbindingen met autocommit uit. Een INSERT blijft dan in een open transactie staan. Als de verbinding met die nog open transactie terug naar de pool gaat, sluit aiomysql hem, en MariaDB gooit de niet-bevestigde rij weg. In onze test werd een rij die was ingevoegd op een pool zonder autocommit=True door 0 andere verbindingen gezien. Geef autocommit=True mee aan create_pool, zoals hierboven, of roep await conn.commit() aan na je schrijfacties.
Limieten die ertoe doen voor je pool
20 gelijktijdige verbindingen per databasegebruiker. Elk proces dat dezelfde login gebruikt telt mee. Verbinding 21 wordt geweigerd met (1226, "User '...' has exceeded the 'max_user_connections' resource (current value: 20)"). maxsize=5 houdt de bot ruim eronder.
Een query die langer dan 120 seconden duurt, wordt gestopt. MariaDB beëindigt hem met fout 1969, Query execution was interrupted (max_statement_time exceeded). In onze test gebeurde dat na 120.03 seconden. De queries van een bot duren normaal milliseconden, dus dit raakt alleen een op hol geslagen query.
500 MB per database. De pagina Databases toont hoeveel er gebruikt is. Bij 500 MB worden schrijfacties gestopt tot je rijen verwijdert.
Serverback-ups bevatten de database niet. Exporteer hem af en toe vanuit phpMyAdmin.
Fouten en wat ze betekenen
Dit zijn de exacte fouten die aiomysql gaf in onze test (ze komen van PyMySQL, dat aiomysql eronder gebruikt):
pymysql.err.OperationalError (1045, "Access denied for user ..."): verkeerde DB_USER of DB_PASSWORD. Na Wachtwoord resetten op de kaart Verbinding werkt het oude wachtwoord meteen niet meer: vervang DB_PASSWORD en start de bot opnieuw.
pymysql.err.OperationalError (2003, "Can't connect to MySQL server on ..."): verkeerde host of poort, of een verbinding van buiten PlayNHost. De database accepteert alleen verbindingen van PlayNHost-servers en phpMyAdmin, dus dit krijg je ook op je eigen computer.
(1226, ... 'max_user_connections' ...): te veel open verbindingen, zie de limieten hierboven.
Een variabele die ontbreekt in Omgeving stopt de bot voordat hij verbindt, met KeyError: 'DB_HOST' of de naam van de ontbrekende, omdat de code elke waarde leest met os.environ[...]. Voeg hem toe en start de bot opnieuw: variabelen gelden vanaf de volgende start.
Het installeren van discord.py en aiomysql met pip vanaf nul piekte in onze test op 78 MB geheugen, in een container met een limiet van 512 MB zoals ons kleinste botabonnement. Hoeveel de draaiende bot nodig heeft, hangt vooral af van op hoeveel servers hij zit: Hoeveel RAM heeft een Discord-bot nodig?
We gebruiken cookies om de site te laten werken, te begrijpen hoe hij wordt gebruikt en onze marketing te meten. Je kunt alles accepteren, alleen essentiële cookies accepteren of per categorie kiezen.We gebruiken cookies om de site te laten werken, te begrijpen hoe hij wordt gebruikt en onze marketing te meten. Ze staan hier standaard aan. Je kunt alles uitzetten wat je niet wilt.Lees ons privacybeleid