exec($deleteQuery); // Récupération des IDs des passages qui ont été migrés $stmt = $targetDb->query("SELECT id FROM ope_pass"); $migratedPasses = $stmt->fetchAll(PDO::FETCH_COLUMN); if (empty($migratedPasses)) { echo "ERREUR: Aucun passage n'a été migré. Veuillez d'abord migrer la table ope_pass." . PHP_EOL; closeSshTunnel(); exit(1); } // Récupération des IDs des utilisateurs qui ont été migrés $stmt = $targetDb->query("SELECT id FROM users"); $migratedUsers = $stmt->fetchAll(PDO::FETCH_COLUMN); if (empty($migratedUsers)) { echo "ERREUR: Aucun utilisateur n'a été migré. Veuillez d'abord migrer la table users." . PHP_EOL; closeSshTunnel(); exit(1); } // Récupération directe des IDs des passages dans la table cible $stmt = $targetDb->query("SELECT id FROM ope_pass"); $migratedPassIds = $stmt->fetchAll(PDO::FETCH_COLUMN); if (empty($migratedPassIds)) { echo "ERREUR: Aucun passage n'a été migré. Veuillez d'abord migrer la table ope_pass." . PHP_EOL; closeSshTunnel(); exit(1); } // Récupération des historiques de passages depuis la source $query = "SELECT * FROM ope_pass_histo"; $stmt = $sourceDb->query($query); $histos = $stmt->fetchAll(PDO::FETCH_ASSOC); // Préparation de la requête d'insertion $insertQuery = "INSERT INTO ope_pass_histo ( fk_pass, date_histo, sujet, remarque ) VALUES ( :fk_pass, :date_histo, :sujet, :remarque )"; $insertStmt = $targetDb->prepare($insertQuery); // Compteurs pour le suivi $inserted = 0; $skipped = 0; $errors = 0; // Traitement de chaque historique foreach ($histos as $histo) { // Vérifier si l'ID du passage existe dans la table cible $fkPass = $histo['fk_pass']; if (!in_array($fkPass, $migratedPassIds)) { // Le passage n'a pas été migré, on ignore cet historique $skipped++; continue; } // On ignore le champ fk_user qui n'existe plus dans la table cible // Conversion des dates $dateHisto = !empty($histo['date_histo']) ? date('Y-m-d H:i:s', strtotime($histo['date_histo'])) : null; // Préparation des données pour l'insertion $histoData = [ 'fk_pass' => $fkPass, 'date_histo' => $dateHisto, 'sujet' => $histo['sujet'] ?? '', 'remarque' => $histo['remarque'] ?? '' ]; try { // Insertion dans la table cible $insertStmt->execute($histoData); $inserted++; } catch (PDOException $e) { echo "ERREUR: Migration de l'historique (rowid {$histo['rowid']}, passage {$fkPass}) : " . $e->getMessage() . "\n"; $errors++; } } // Afficher uniquement s'il y a des erreurs if ($errors > 0) { echo "ERREUR: $errors erreurs lors de la migration de la table ope_pass_histo." . PHP_EOL; } // Fermer le tunnel SSH closeSshTunnel(); } catch (Exception $e) { echo "ERREUR CRITIQUE: " . $e->getMessage() . PHP_EOL; // Fermer le tunnel SSH en cas d'erreur closeSshTunnel(); exit(1); }