Am 07.10.2026 hat das RefreshDatabase eines frischen Demo-Projekts (Test der Vorlagen aus dev/git-deploy-monitoring) die lokale Datenbank `pressekonto` auf global-mysql vollständig geleert (Binärlog binlog.000009, Pos. 566161486). Ursache: docker-compose.yml setzte DB_* als Container-Umgebungsvariablen, die in Laravel Vorrang vor jeder .env haben; die phpunit.xml des Demo-Projekts erzwang kein SQLite. Die eigene Suite war nicht beteiligt (force="true" und Guard in tests/TestCase.php greifen; Gegenprobe mit MySQL-Variablen grün). - docker-compose.yml: DB_* entfernt (Werte identisch in .env), wirksam nach Neuerstellen des Containers. - Baukasten: „Testdatenbank absichern" (phpunit.xml mit force, Guard, Gegenprobe) als Pflicht vor RefreshDatabase. - .ai/rules/general.md und CLAUDE.md: fremde/frische Laravel-Projekte nur mit SQLite :memory: testen; migrate hier erst nach migrate:status. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.6 KiB
| paths | |
|---|---|
|
General
Befehle direkt im Dev-Container ausführen
Die Arbeitsumgebung /var/www/html liegt bereits im DEV-Container. PHP-/Artisan-, Composer- und Node-Befehle dort direkt ausführen (z. B. php artisan test --compact), ohne vendor/bin/sail davor. Eine Sail-Meldung über nicht laufendes Docker ist in diesem Container kein Nachweis, dass Docker auf dem Host gestoppt ist. Diese ausdrückliche Benutzeranweisung ersetzt die allgemeine Sail-Prefix-Vorgabe für diese Umgebung.
Fremde oder frische Laravel-Projekte nie gegen die lokale Datenbank testen
Auf global-mysql liegen die Datenbanken mehrerer Projekte, und Container-Umgebungsvariablen haben in Laravel Vorrang vor .env und nicht erzwungenen phpunit.xml-Werten. Ein frisches Laravel-Projekt hat die SQLite-Zeilen in phpunit.xml nur auskommentiert — RefreshDatabase führt dann migrate:fresh auf der Datenbank aus, die die Umgebung vorgibt (07.10.2026: so wurde pressekonto vollständig geleert). Deshalb:
- Tests,
migrate,migrate:fresh,db:wipeoder Seeder eines anderen bzw. frisch angelegten Laravel-Projekts in diesem Container nur mitDB_CONNECTION=sqlite DB_DATABASE=:memory: DB_URL=davor ausführen, z. B.DB_CONNECTION=sqlite DB_DATABASE=:memory: DB_URL= php artisan test. - Vorher prüfen, dass
phpunit.xmldort SQLite:memory:mitforce="true"setzt (siehedev/git-deploy-monitoring/02-fehlerprotokoll-glitchtip.md, „Testdatenbank absichern“). php artisan migratein diesem Projekt erst nachphp artisan migrate:status: Stehen unerwartet viele Migrationen aus, ist die Datenbank nicht die erwartete — anhalten und nachfragen.