Wenn autotest Fehler liefert, die eigentlich keine sind

In meinen aktuellen Gehversuchen mit Ruby on Rails tappte ich eben in eine böse Falle mit autotest.

Autotest führt im Hintergrund alles Tests aus. Ändert sich eine Source-Datei oder eine Test-Datei, so werden nur die betroffenen Tests durchgeführt. Über Growl lassen sich die Ergebnisse sehr schön automatisch einblenden. So weit, so gut.

Doch im zweiten Durchlauf erhielt ich immer Fehler, die daher rührten, dass in der Testdatenbank immer noch alte Einträge vorhanden waren. Das darf eigentlich nicht passieren, führt doch rspec jeden einzelnen Test durch Transaktionen gekapselt aus und rollt danach zurück. So musste ich nun jedesmal ein rake db:test:prepare ausführen.

Dass das nicht die Lösung sein kann, sieht wohl jeder sofort ein. Also suchte ich ein wenig und stellte fest, dass MySQL, so wie ich sie installiert hatte, nicht die InnoDB-Enginge unterstützte. Da aber MyISAM nicht mit Transaktionen umgehen kann, war das die Lösung des Problems …

Feststellen, welche Engines unterstützt werden, lässt sich übringes auf der mysql-Konsole mit dem Kommando

SHOW VARIABLES LIKE 'have_%';

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *