18 April 2010

MySQLd Einstellung lower_case_table_name umgehen

MySQL ist standardmäßig mit lower_case_table_name=0 konfiguriert und es werden Tabellen mit gemischt Groß- und Kleinschreibung angelegt. Manchmal ist es aber von Nöten auch Programme die mit lower_case_table_name=1 rechnen zu unterstützen. Hierbei werden alle Tabellennamen nur noch mit Kleinbuchstaben bei einer Abfrage dargestellt, egal ob man mit Großbuchstaben, nur Kleinbuchstaben oder hin und wieder gemischt die Datenbank nach der Tabelle fragt.
Startet man den Server mit dem Flag lower_case_table_name=1, wird man schnell feststellen, dass nichts mehr von den vorigen Programmen funktioniert (zB: Alfresco).
Die Lösung auf die ich gekommen bin ist nicht unbedingt elegant, aber für kleinere "Legacy" Programme durchaus praktikabel:
lower_case_table_name=0 bleibt weiterhin eingestellt, aber für jede Tabelle die irgendwann im Programm in einer anderen Schreibweise als der angelegten verlangt wird, legt man eine View auf diese Tabelle an, die nach genau dieser alternativen Schreibweise benannt wird:

CREATE VIEW tAbLe AS SELECT * FROM Table

Keine Kommentare:

 
blank info