| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- #!/usr/bin/env python3
- """
- Script de test de connexion à MariaDB
- Usage: python scripts/test_mariadb_connection.py
- """
- import os
- import sys
- from pathlib import Path
- from dotenv import load_dotenv
- # Charger le .env
- BASE_DIR = Path(__file__).resolve().parent.parent
- load_dotenv(BASE_DIR / '.env')
- def test_import():
- """Tester l'import de MySQLdb"""
- print("🔍 Test 1 : Import du module MySQLdb...")
- try:
- import MySQLdb
- print(" ✅ MySQLdb importé avec succès")
- return True
- except ImportError as e:
- print(f" ❌ Erreur d'import: {e}")
- print(" 💡 Installez mysqlclient: pip install mysqlclient")
- return False
- def test_connection():
- """Tester la connexion à MariaDB"""
- print("\n🔍 Test 2 : Connexion à MariaDB...")
-
- # Récupérer les paramètres depuis .env
- db_host = os.getenv('DB_HOST', 'localhost')
- db_port = int(os.getenv('DB_PORT', '3306'))
- db_user = os.getenv('DB_USER', 'root')
- db_password = os.getenv('DB_PASSWORD', '')
- db_name = os.getenv('DB_NAME', 'duhaz_blog')
-
- print(f" Paramètres de connexion:")
- print(f" - Hôte: {db_host}")
- print(f" - Port: {db_port}")
- print(f" - Utilisateur: {db_user}")
- print(f" - Base: {db_name}")
- print()
-
- try:
- import MySQLdb
- conn = MySQLdb.connect(
- host=db_host,
- port=db_port,
- user=db_user,
- passwd=db_password,
- db=db_name
- )
- print(" ✅ Connexion établie avec succès!")
-
- # Tester une requête
- cursor = conn.cursor()
- cursor.execute("SELECT VERSION()")
- version = cursor.fetchone()
- print(f" 📊 Version MariaDB: {version[0]}")
-
- cursor.execute("SELECT DATABASE()")
- current_db = cursor.fetchone()
- print(f" 📂 Base de données active: {current_db[0]}")
-
- cursor.close()
- conn.close()
- return True
-
- except Exception as e:
- print(f" ❌ Erreur de connexion: {e}")
- print()
- print(" 💡 Vérifications à faire:")
- print(" 1. Le conteneur MariaDB est-il démarré?")
- print(" docker ps | grep mariadb")
- print(" 2. Le port est-il exposé?")
- print(" docker port mariadb")
- print(" 3. Pouvez-vous pinguer l'hôte?")
- print(f" ping {db_host}")
- print(" 4. Le port est-il accessible?")
- print(f" telnet {db_host} {db_port}")
- return False
- def test_django_connection():
- """Tester la connexion via Django"""
- print("\n🔍 Test 3 : Connexion via Django...")
-
- # Vérifier que DB_ENGINE est bien configuré
- db_engine = os.getenv('DB_ENGINE', 'sqlite3')
- if db_engine != 'mysql':
- print(f" ⚠️ DB_ENGINE={db_engine} (devrait être 'mysql')")
- print(" 💡 Modifiez votre .env: DB_ENGINE=mysql")
- return False
-
- try:
- # Setup Django
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'duhaz_blog.settings')
- import django
- django.setup()
-
- from django.db import connection
- with connection.cursor() as cursor:
- cursor.execute("SELECT VERSION()")
- version = cursor.fetchone()
- print(f" ✅ Django connecté à MariaDB {version[0]}")
-
- return True
- except Exception as e:
- print(f" ❌ Erreur Django: {e}")
- return False
- def main():
- print("=" * 60)
- print("🧪 Test de connexion MariaDB")
- print("=" * 60)
- print()
-
- # Test 1: Import
- if not test_import():
- return 1
-
- # Test 2: Connexion directe
- if not test_connection():
- return 1
-
- # Test 3: Connexion via Django
- if not test_django_connection():
- return 1
-
- print("\n" + "=" * 60)
- print("✅ Tous les tests sont passés!")
- print("=" * 60)
- print()
- print("Vous pouvez maintenant lancer la migration:")
- print(" python scripts/migrate_to_mariadb.py")
- print()
-
- return 0
- if __name__ == '__main__':
- sys.exit(main())
|