# Coaster World v1.92.1 — Correctif cache MySQL

Base : **v1.92.0**.

## Correctif critique

- Correction de l'erreur 500 MySQL `SQLSTATE[HY000]: General error: 1366 Incorrect string value` apparue sur l'accueil après la v1.92.0.
- La cause était le nouveau cache catalogue qui envoyait des objets/collections Eloquent sérialisés dans la colonne `cache.value` du cache SQL.
- Les propriétés protégées des objets PHP introduisent des octets binaires dans leur sérialisation ; une colonne MySQL `TEXT` peut refuser ces octets selon son encodage.

## Nouveau cache sûr

- Ajout de `App\Support\SafeCache`.
- Les caches catalogue de la v1.92 stockent désormais uniquement une représentation **base64(JSON)**, donc un contenu ASCII sûr pour le cache MySQL.
- Aucun modèle Eloquent ni `Collection` Laravel n'est désormais écrit directement dans ces nouveaux caches.
- Si le backend de cache est indisponible, verrouillé ou refuse une écriture, la page exécute la requête normalement au lieu de retourner une erreur 500.

## Accueil

- Les parcs mis en avant sont mis en cache uniquement sous forme d'IDs.
- Les modèles `Park` nécessaires à la vue sont reconstruits ensuite par une requête normale.
- Les données du globe sont mises en cache sous forme de tableaux simples.
- Les statistiques globales utilisent le cache sûr.
- Les clés de cache passent de `v192` à `v1921` pour éviter toute collision avec un ancien payload.

## Explorer

- La liste des pays est mise en cache sous forme de tableaux simples `iso2/name`.
- Les résultats Parcs / Attractions / Coasters sont transformés en tableaux avant mise en cache.
- Les clés de cache passent de `v192` à `v1921`.
- La pagination, les filtres, la recherche et les tris de la v1.92.0 restent inchangés.

## Base de données

**Aucune migration SQL.**

Aucune modification de structure de la table `cache` n'est nécessaire.
