MySQL Unterscheidung von Groß- u. Kleinschreibung in Tabellennamen

Aus GEVITAS
Version vom 6. Februar 2013, 17:21 Uhr von Artstage (Diskussion | Beiträge) (mySQL Unterscheidung von Groß- u. Kleinschreibung in Tabellennamen)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

1 Allgemeines

Linux als Betriebssystem ist case sensitive, das bedeutet, dass z.B. bei Datenbank-Abfragen unterschieden wird, ob ein Tabellenname oder Feld groß und klein geschrieben wird.
Im Unterschied dazu sind Windows und MaxOS case insensitive, das heißt ihr Dateisystem unterscheidet nicht nach Groß- u. Kleinschreibung.

2 Beschreibung

Wird eine Anfrage an reflex.MART gestellt, die im Dateisystem des Servers aber als "mart" gespeichert ist, wird mySQL eine Fehlermeldung zurück geben. Die Datenkbank-Tabellen sind als einzelne Dateien auf dem Server gespeichert, somit ist man bei der Abfrage erstmal an das Dateisystem gebunden und muss bei Linux zwischen Groß- u. Kleinschreibung unterscheiden. Die Felder in einer Tabelle hingegen sind in dieser Datei gespeichert und werden somit von mySQL verwaltet. Hier wird immer die Groß- u. Kleinschreibung beachtet.

Für die Tabellen hat der mySQL-Server eine Option, mit der man die Unterscheidung zwischen Groß- u. Kleinschreibung abschaltet und somit auch Anfragen an reflex.MART oder reflex.MArT annimmt und an die eigentliche Tabelle "mart" gereicht werden.

3 Erklärung des Parameters

Die Option mit der man den Zugriff auf die Tabellen des mySQL-Servers case insensitve (das heißt Missachtung der Groß- u. Kleinschreibung) schalten kann lautet:

lower_case_table_names = 1

Mögliche Werte, die dieser Parameter annehmen kann, sind: 0, 1, 2.
Für die genaue Beschreibung sei an dieser Stelle auf die Dokumentation des mySQL-Servers verwiesen: http://dev.mysql.com/doc/refman/5.1/de/name-case-sensitivity.html

Der Parameter lässt sich entweder als Start-Parameter beim Start des Server übergeben oder aber, für die dauerhafte Anwendung, in der mySQL-Serverkonfigurationsdatei my.cnf (abhängig vom Betriebssystem, unter der Standardinstallation in Debian: /etc/mysql/my.cnf) setzen. Wichtig ist, dass sich der Parameter in dem Abschnitt [mysqld] der Konfigurationsdatei befindet. Danach muss der mysql-Dienst neu gestartet werden (unter Debian mit dem Befehl "/etc/init.d/mysql restart"), damit die Änderung Wirkung zeigt. Bitte vorher jedoch den nächsten Abschnitt lesen.

4 Anwendung des Parameters

Dieser Parameter sollte dann gesetzt werden, wenn Probleme mit der Groß- u. Kleinschreibung von Tabellennamen auftreten. Fehlermeldungen wie z.B. Table reflex.MART does not exist, können Hinweise für das nicht funktionieren des Zugriffs aufgrund von Groß- u. Kleinschreibung sein, können aber auch andere Ursachen haben.

Der Parameter sollte nur nach voraus gehender Beschäftigung mit dem Thema und mit Testversuchen erfolgen. Zu beachten ist, dass diese Option erstmal für den gesamten Server gilt! Das heißt nicht nur für eine eventuelle Testdatenbank, sondern für alle Datenbanken auf dem Server. Bevor der Parameter auf 1 gesetzt wird, muss überprüft werden, ob alle Tabellennamen der Datenbank im Dateisystem wirklich klein geschrieben sind. Dies ist zwar in der Reflex-Installation standardmäßig der Fall, muss aber vorher überprüft werden. in Debian werden die Datenbanken und /var/lib/mysql/ gespeichert.