MySQL pour CSWeb
MySQL est compatible avec CSWeb vanilla et peut être utilisé pour le breakout.
Quick Start
# .env
BREAKOUT_DB_TYPE=mysql
MYSQL_BREAKOUT_HOST=mysql-breakout
MYSQL_BREAKOUT_PORT=3307
MYSQL_BREAKOUT_DATABASE=csweb_breakout
MYSQL_BREAKOUT_USER=breakout_user
MYSQL_BREAKOUT_PASSWORD=your_secure_passworddocker compose --profile local-mysql up -dConfiguration
Variables d'Environnement
| Variable | Description | Défaut |
|---|---|---|
MYSQL_BREAKOUT_HOST | Hostname MySQL | mysql-breakout |
MYSQL_BREAKOUT_PORT | Port | 3307 |
MYSQL_BREAKOUT_DATABASE | Nom base | csweb_breakout |
MYSQL_BREAKOUT_USER | Utilisateur | breakout_user |
MYSQL_BREAKOUT_PASSWORD | Mot de passe | (requis) |
Docker Compose
Service activé avec profil local-mysql :
mysql-breakout:
image: mysql:8.0
profiles: ["local-mysql"]
environment:
- MYSQL_DATABASE=${MYSQL_BREAKOUT_DATABASE}
- MYSQL_USER=${MYSQL_BREAKOUT_USER}
- MYSQL_PASSWORD=${MYSQL_BREAKOUT_PASSWORD}
ports:
- "3307:3306"Note : Port 3307 pour éviter conflit avec MySQL metadata (port 3306).
Test Connexion
CLI MySQL
docker compose exec mysql-breakout mysql -u breakout_user -p csweb_breakoutVérification Driver
php bin/console csweb:check-database-drivers
# ✅ pdo_mysql : AvailableBreakout vers MySQL
Commande
php bin/console csweb:process-cases-by-dict EVAL_DICTTables Créées
-- Liste des tables
SHOW TABLES;
-- Exemple
eval_cases
eval_producteurs
eval_observationsQuery Exemple
-- Compter les cases
SELECT COUNT(*) FROM eval_cases;
-- Cases vérifiés
SELECT COUNT(*) FROM eval_cases WHERE verified = 1;phpMyAdmin (Interface Web)
Accès
Avec profil dev :
docker compose --profile local-mysql --profile dev up -dURL : http://localhost:8081 (opens in a new tab)
Identifiants :
- Server:
mysql-breakout - Username:
breakout_user - Password: (votre mot de passe)
Migration depuis PostgreSQL
Export PostgreSQL
docker compose exec postgres pg_dump -U csweb_analytics -t eval_cases --data-only csweb_analytics > data.sqlConversion SQL
Adapter syntaxe PostgreSQL → MySQL :
# Remplacer séquences
sed -i 's/SERIAL/INT AUTO_INCREMENT/g' data.sql
# Remplacer booléens
sed -i 's/true/1/g' data.sql
sed -i 's/false/0/g' data.sqlImport MySQL
cat data.sql | docker compose exec -T mysql-breakout mysql -u breakout_user -p csweb_breakoutPerformance
Indexes
-- Index sur guid
CREATE INDEX idx_cases_guid ON eval_cases(guid);
-- Index sur dates
CREATE INDEX idx_cases_modified ON eval_cases(modified_date);Optimisation
-- Analyser table
ANALYZE TABLE eval_cases;
-- Optimiser
OPTIMIZE TABLE eval_cases;Troubleshooting
Connection Refused
# Vérifier service
docker compose ps mysql-breakout
# Logs
docker compose logs mysql-breakoutPort Conflict
Si port 3307 occupé, changer dans .env :
MYSQL_BREAKOUT_PORT=3308Authentication Plugin Error
Si erreur caching_sha2_password :
ALTER USER 'breakout_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;Backup & Restore
Backup
docker compose exec mysql-breakout mysqldump -u breakout_user -p csweb_breakout > backup.sqlRestore
cat backup.sql | docker compose exec -T mysql-breakout mysql -u breakout_user -p csweb_breakout