# DERMAROC R1.1 — Correctif de l'installateur (MySQL 1064)

## Cause exacte

La R1 découpait les migrations avec `preg_split('/;(?=\s|$)/m', $sql)`.
Le commentaire de `002_reference_categories.sql` contient `; AUCUN produit, prix ou stock importé.` : la R1 exécutait accidentellement `AUCUN produit...` comme du SQL.

## Correction apportée

- Nouveau parseur SQL (`bin/SqlStatementParser.php`) : ignore les commentaires `--`, `#`, `/* */` et préserve les chaînes délimitées, sans exécuter de texte hors SQL.
- Prévalidation de **toutes** les migrations avant la première écriture.
- Diagnostic `--check` en lecture seule : tables existantes, nombre de lignes et présence du fichier local de configuration.
- Reprise `--resume` après contrôle explicite : ne supprime aucune table, ne remplace pas d'administrateur, refuse des données métier existantes. Les migrations sont idempotentes dans cette R1.1 (`CREATE TABLE IF NOT EXISTS`, `INSERT IGNORE`).
- Tests sans base pour le découpage, y compris point-virgule dans commentaires et chaînes SQL.

## Procédure en cas d'échec de la R1

**Avant tout : sauvegarder la base existante ou faire un snapshot chez l'hébergeur.** Ne pas supprimer de table ni lancer de nouvelle création de base.

1. Déployer les deux nouveaux fichiers `bin/install.php` et `bin/SqlStatementParser.php` (le ZIP correctif ne remplace pas le thème ni tes données).
2. Conserver les variables `DERMAROC_DB_HOST`, `DERMAROC_DB_NAME`, `DERMAROC_DB_USER`, `DERMAROC_DB_PASSWORD` de la première installation. Ne pas afficher les secrets en console ou dans le chat.
3. Contrôler les migrations : `php bin/install.php --validate-sql`. Attendu : 9 instructions dans 001 et 2 dans 002.
4. Contrôler la base, sans aucune écriture : `php bin/install.php --check`. Si l'ancienne erreur s'est produite exactement dans 002, il devrait y avoir 9 tables et zéro administrateur. Vérifier réellement avant la suite.
5. Si l'état correspond à une installation R1 interrompue, avec zéro administrateur, aucun produit, ni mouvement de stock, conserver les variables `DERMAROC_ADMIN_EMAIL`, `DERMAROC_ADMIN_PASSWORD`, `DERMAROC_BASE_URL`, puis lancer `php bin/install.php --resume`.
6. Après réussite, ouvrir `/admin/login` et tester la connexion.

**Ne pas lancer `--resume`** si un administrateur ou des données métier existent, si la base est partagée avec une autre application, si une configuration privée existe déjà, ou si le diagnostic est inattendu. Préserver les données et investiguer.

## Limitations et garanties

MySQL et `pdo_mysql` sont indispensables à l'installation réelle. Cette livraison a passé les tests du parseur sous PHP 8.4, mais pas une installation MySQL ni une validation PHP 8.5, faute de serveur et d'extension correspondants sur l'environnement de fabrication. La R1.1 reste une version de développement, pas une version de production.
