run_migrations.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Script d'exécution des migrations
  4. *
  5. * Ce script exécute automatiquement toutes les migrations SQL dans l'ordre.
  6. * Utilisation : php migrations/run_migrations.php
  7. */
  8. // Configuration de la base de données
  9. require __DIR__ . '/../config/config.php';
  10. echo "=== Exécution des migrations ===\n\n";
  11. try {
  12. // Connexion à MySQL via socket MAMP
  13. $dsn = sprintf(
  14. 'mysql:dbname=%s;unix_socket=%s;charset=utf8mb4',
  15. $config['db_name'],
  16. $config['db_socket']
  17. );
  18. $pdo = new PDO($dsn, $config['db_user'], $config['db_password']);
  19. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  20. echo "✓ Connexion à la base de données établie\n";
  21. // Créer la base si elle n'existe pas
  22. $pdo->exec("CREATE DATABASE IF NOT EXISTS `{$config['db_name']}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
  23. $pdo->exec("USE `{$config['db_name']}`");
  24. echo "✓ Base de données '{$config['db_name']}' sélectionnée\n\n";
  25. // Lister et trier les fichiers de migration
  26. $migrationFiles = glob(__DIR__ . '/*.sql');
  27. sort($migrationFiles);
  28. if (empty($migrationFiles)) {
  29. echo "Aucune migration trouvée dans le dossier.\n";
  30. exit(0);
  31. }
  32. // Exécuter chaque migration
  33. foreach ($migrationFiles as $file) {
  34. $fileName = basename($file);
  35. echo "Exécution de $fileName... ";
  36. try {
  37. $sql = file_get_contents($file);
  38. $pdo->exec($sql);
  39. echo "✓ Réussie\n";
  40. } catch (Exception $e) {
  41. echo "✗ Échouée: " . $e->getMessage() . "\n";
  42. exit(1);
  43. }
  44. }
  45. echo "\n✓ Toutes les migrations ont été exécutées avec succès !\n";
  46. } catch (Exception $e) {
  47. echo "✗ Erreur lors de l'exécution des migrations: " . $e->getMessage() . "\n";
  48. exit(1);
  49. }
  50. echo "\n=== Migrations terminées ===\n";