Doctrine Error: Missing Classname.

Bei einigen MySQL Installationen, speziell beim Zend Server oder aber auch bei XAMPP stolpert man immer wieder beim generieren der Modelklassen über den Fehler “Missing Classname”.

Der Fehler tritt auf wenn man zbsp. Doctrine mit dem Zend Framework  und für die Klassennamen den Pearstyle verwendet.

Das Problem:

MySQL verwendet für die Beschreibung von Foreign Keys Tabellennamen den lowercase Modus, ein typische Beschreibung sieht dann wie folgt aus

ADD CONSTRAINT `foreign_key_2` FOREIGN KEY (`foreign_id`)
REFERENCES `foreign_key_table` (`id`)

Doctrine erkennt beim generieren nicht die Klasse “foreign_key_table”, es wird “Foreign_Key_Table” erwartet.

Die Lösung:

In der my.cnf muss folgende System Variable hinzugefügt werden:

lower_case_table_names=0

Danach den MySQL Server neustarten.

Die Variablen können auch zur Laufzeit mit dem SQL Befehl

SHOW VARIABLES LIKE 'lower_case_table_names';


abgefragt werden und mit

SET @@lower_case_table_names=0;


geändert werden falls kein direkter Zugriff auf den Server möglich ist. (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html)

Damit werden nun auch Foreign Keys im Camelcase verfahren gespeichert und Doctrine generiert die Verbindungen zwischen Tabellen im Pearstyle ohne Fehler.

  1. von ktwelve gepostet