logo oujood
🔍

MySQL vs MySQL2 : Quelle différence et lequel choisir ?

OUJOOD.COM

1. Présentation des deux bibliothèques

🔹 MySQL (mysql)

La bibliothèque mysql est l’une des premières solutions Node.js pour interagir avec MySQL. Elle est simple à utiliser et offre les fonctionnalités de base.

  • ✅ API simple et intuitive.
  • ✅ Connexions persistantes et gestion des pools.
  • Ne supporte pas nativement les Promises et async/await.

🔹 MySQL2 (mysql2)

La bibliothèque mysql2 est une version optimisée de `mysql`, avec un meilleur support des performances et des Promises.

  • ✅ Plus rapide et optimisé.
  • Supporte les Promises et async/await.
  • ✅ Supporte les requêtes préparées pour sécuriser les requêtes SQL.

2. Comparaison des fonctionnalités

Fonctionnalité MySQL MySQL2
Compatibilité avec MySQL ✅ Oui ✅ Oui
Support de Promises (async/await) ❌ Non ✅ Oui
Performance ⚠️ Standard 🚀 Plus rapide
Support des requêtes préparées ❌ Non ✅ Oui

3. Exemple d'utilisation

🔹 Avec MySQL (callback-based)

📋 Copier le code

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'test'
});

connection.connect();

connection.query('SELECT * FROM users', (error, results, fields) => {
  if (error) throw error;
  console.log(results);
});

connection.end();
    
Explication ligne par ligne :
  • const mysql = require('mysql'); → Charge le module MySQL.
  • const connection = mysql.createConnection({...}); → Initialise une connexion avec les détails de la base de données.
  • connection.connect(); → Établit la connexion.
  • connection.query('SELECT * FROM users', ...); → Exécute une requête SQL pour récupérer tous les utilisateurs.
  • if (error) throw error; → Vérifie si une erreur survient.
  • console.log(results); → Affiche les résultats.
  • connection.end(); → Ferme la connexion.

🔹 Avec MySQL2 (async/await)

📋 Copier le code

const mysql = require('mysql2/promise');

async function fetchUsers() {
  const connection = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'test'
  });

  const [rows] = await connection.execute('SELECT * FROM users');
  console.log(rows);

  await connection.end();
}

fetchUsers();
    
Explication ligne par ligne :
  • const mysql = require('mysql2/promise'); → Charge la version de MySQL2 qui supporte les Promises.
  • async function fetchUsers() { ... } → Déclare une fonction asynchrone.
  • const connection = await mysql.createConnection({...}); → Établit la connexion en mode Promise.
  • const [rows] = await connection.execute('SELECT * FROM users'); → Exécute une requête SQL et attend la réponse.
  • console.log(rows); → Affiche les résultats.
  • await connection.end(); → Ferme la connexion proprement.
  • fetchUsers(); → Appelle la fonction pour exécuter le script.

4. Quand choisir MySQL2 au lieu de MySQL ?

Il est recommandé d’utiliser MySQL2 plutôt que MySQL car :

  • ✅ Plus rapide et optimisé.
  • Supporte les Promises et async/await, facilitant l’écriture du code.
  • ✅ Compatible avec MySQL, donc migration facile.

⚠️ Cas où MySQL pourrait être utilisé

  • Si vous travaillez sur un ancien projet déjà basé sur MySQL.
  • Si vous utilisez une architecture callback et ne souhaitez pas refactoriser.

5. Conclusion

👉 MySQL2 est le meilleur choix pour la plupart des projets Node.js grâce à ses performances et son support des Promises.

Si vous commencez un nouveau projet, optez pour MySQL2 ! 🚀