Messages : 2,395
Sujets : 206
Inscription : Apr 2004
Michael Ortmann a adapté le module MySQL (initialement créé par BarkerJr) pour pouvoir utiliser MySQL sans avoir à charger le package TCL.
Pour l'installer
Pré-requis: libmysqlclient-dev
- Téléchargez le module depuis nos scripts ou sur le github
- Placez le dans ~/eggdrop-1.9.5/src/mod/
- Décompressez le module
- Recompilez eggdrop (
cd ~/eggdrop-1.9.5/ & ./configure & make config & make & make install)
- Ajoutez
loadmodule mysql à votre fichier .conf
- Rehashez l'eggdrop
Commandes accessibles en TCL- mysql_connect <database> <hostname> [user] [password] [socket|port]
- mysql_close
- mysql_query <query>
- mysql_escape [byte] <string>
- mysql_errno
- mysql_ping
- mysql_connectioninfo
- mysql_insert_id
- mysql_connected
- mysql_affected_rows
Messages : 2,395
Sujets : 206
Inscription : Apr 2004
Petit ajout: en commençant à écrire une documentation sur ce module, je me suis rendu compte qu'il ne renvoyait pas d'idx de connexion à la base, et effectivement tout se fait en interne dans le module.
Ce qui signifie que pour plus de sécurité vous devez toujours fermer la connexion à la base après avoir effectué vos requêtes, et donc l'ouvrir juste avant. Ainsi, si vous avez plusieurs scripts qui utilisent ce module, vous êtes certain de la connexion en cours, à moins d'avoir le manque de chance qu'il y en ait deux qui s'ouvrent de manière concomitante.
Je ferai plus de tests dès que possible, quitte à voir si je ne peux pas modifier le module pour qu'il intègre un idx.
Messages : 943
Sujets : 93
Inscription : Jul 2007
Que se passe-t-il si un script ouvre une connexion à la db, qu'un autre script fait de même, et que le premier script ferme la connexion avant que le deuxième ait fini de l'utiliser ?
Toute l'actualité de mes scripts ici (dernière mise à jour le 03/04/2025)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
Messages : 2,395
Sujets : 206
Inscription : Apr 2004
(03/05/2024, 16:19)MenzAgitat a écrit : Que se passe-t-il si un script ouvre une connexion à la db, qu'un autre script fait de même, et que le premier script ferme la connexion avant que le deuxième ait fini de l'utiliser ?
C'est exactement la discussion que j'ai actuellement avec mortmann, d'où la modification que je vais tenter de faire sur le module pour avoir un idx de connexion afin d'utiliser la bonne (même lors de la fermeture)
Messages : 2,395
Sujets : 206
Inscription : Apr 2004
Réponse plus précise pour tous:
- le module n'ouvre qu'une seule connexion à la fois, si une connexion existe déjà il l'écrase avec la nouvelle
- par voie de conséquence, il n'y a qu'une connexion a fermer, indépendamment du script qui l'appelle
Messages : 2,395
Sujets : 206
Inscription : Apr 2004
Une version multi-connexions est maintenant disponible sur
https://scripts.eggdrop.fr/details-MySQL-s266.html
C'est une version béta que j'ai adapté avec l'aide de copilot. Pour la petite histoire, j'avais envie de tester copilot et l'évolution de ce module m'a semblé être une bonne idée de test, suffisamment petit pour que je comprenne les modifications faites et facile à tester.
A l'utilisation du module, peu de différences mis à part qu'à l'initialisation d'une connexion avec
mysql_connect on récupère un handle (mysqlX) qui peut ensuite être utilisé comme premier argument des autres commandes mysql pour préciser la connexion qu'on utilise.
Si vous rencontrez un bug, merci de le déclarer sur
https://github.com/crazycatdevs/mysql.mod/issues