# Migrations manuelles (prod sans CLI)

En production, `php migrations/apply.php` n'est pas exécutable (pas de
SSH / accès CLI) et l'accès distant à la base non plus. Les migrations
se jouent alors **à la main dans phpMyAdmin**.

Ce dossier contient, pour chaque migration numérotée de `migrations/`,
sa version **déjà préfixée `encre_`** (le préfixe est fixe et identique
en local comme en prod), prête à coller dans l'onglet « SQL » de
phpMyAdmin. Chaque fichier se termine par l'`INSERT` de suivi dans
`encre_schema_migrations`, pour que l'état reste cohérent si un
`apply.php` est lancé un jour.

> Ces fichiers ne sont **pas** ramassés par `migrations/apply.php`
> (`glob` ne descend pas dans les sous-dossiers). Ils doublent
> volontairement les `.sql` numérotés — les garder synchronisés.

## Marche à suivre

1. phpMyAdmin → base de prod → onglet **SQL**.
2. Coller le contenu du fichier `NNN_*.encre.sql` de ce dossier
   correspondant aux migrations en attente, exécuter.
3. Si `ALTER TABLE … ADD COLUMN …` renvoie « Duplicate column »,
   c'est qu'elle a déjà été appliquée : ignorer cette ligne.
4. Vérifier :
   ```sql
   SELECT version FROM encre_schema_migrations ORDER BY version;
   SHOW TABLES LIKE 'encre_%';
   ```

## En attente en prod

_Rien en attente._ `pending-prod.encre.sql` est un gabarit vide, à
regarnir à la prochaine migration numérotée.

### Déjà appliquées à la main en prod

- 2026-09-09 — `002_role_relecteur`, `003_notes` (préfixées, OK).
- 2026-09-09 — `004_medias` + `005_carrousel_config`, via
  **`correctif-prod-tables-non-prefixees.sql`** (voir ci-dessous).
- `encre_schema_migrations` à jour jusqu'à `005_carrousel_config`.

### Incident 2026-09-09 — tables non préfixées

Des fichiers `migrations/NNN_*.sql` (noms de tables **nus**) ont été
collés en prod au lieu de la variante `encre_`. Ça a créé ~14 tables
sans préfixe (vides, ignorées par l'appli) et fait atterrir 004/005 au
mauvais endroit, plus une FK `encre_notes.fk_notes_user` pointant vers
la table parasite `users`.

Réparé par **`correctif-prod-tables-non-prefixees.sql`** (rebranche la
FK vers `encre_users`, supprime les 14 parasites, crée les 3 tables
`encre_*` manquantes, recale le suivi). Script conservé pour trace ;
**ne pas rejouer**.

> **Règle** : en prod on ne colle QUE `pending-prod.encre.sql` (ou un
> `correctif-*.sql` ponctuel). Jamais un `migrations/NNN_*.sql`.
