Knowledgebase: Problemstellung & L�sung
Knowledgebase: Sitemap Sie befinden sich hier:
Knowledgebase -> Warenwirtschaft -> MySQL: Case-Sensitive unter Linux abschalten

Knowledgebase: KB-Artikel versenden Diesen KB-Artikel an folgende E-Mail Adresse weiterempfehlen:
Empf�nger-Adresse:  

Problemstellung:
Knowledgebase: Frage MySQL: Case-Sensitive unter Linux abschalten

L�sung:
Knowledgebase: Antwort
In der Tat ist es scheinbar so, dass MySQL seit dem 5er Server unter Linux case-
sensitive arbeitet. Standardeinstellung ist case-sensitive active. 

Das Problem rührt allerdings daher, dass beim Anlegen der Tabellen diese tatsächlich
case-sensitive (meist mit führendem großem Anfangsbuchstaben begonnen, aber in Kleinbuchstaben
fortgeführt wurden). Das scheint nur beim Anlegen der DB so zu sein. Bei der Nutzung allerdings
greift AFS Kasse ganz unterschiedlich auf die DB zu - mal "korrekt" - mal alles in Kleinbuchstaben,
mal alles in Großbuchstaben.

Die Lösung:

1) Umbenennung aller Tabellennamen (und auch der Datenbank) in Kleinbuchstaben

z.B. auf der console:
cd /var/lib/mysql
for i in */*.frm; do DBASE="````````dirname $i````````"; TBL="````````basename $i .frm````````"; TBLl="````````echo $TBL | tr A-Z a-z````````"; if [[ "$TBL" != "$TBLl" ]] ; then echo "RENAME TABLE ````````$DBASE````````.````````$TBL```````` TO ````````$DBASE````````.````````$TBLl````````" | mysql; fi; done

z.B. als sql-query: 
select concat('rename table ', table_name, ' to ' , lower(table_name) , ';') from information_schema.tables where table_schema = 'your_schema_name';



2) Stoppen des MySQL-Servers und Anpassung der /etc/my.cnf:

[mysqld]
lower_case_table_names=1 

3) Erneuter Start des MySQL-Servers

Danach arbeitet AFS insofern "korrekt" mit der Datenbank, da ab diesem Zeitpunkt die Abfragen nicht
mehr case-sensitive behandelt werden.


Alternativ:

Der MySQL-Server wird VOR der Anlage der Datenbank und Tabellen auf "incase-sensitive" eingestellt, was bei bereits vorhandenen Daten natürlich nicht möglich ist.


Ein reines Umstellen der Verbindungen in der my.cnf ohne vorherige Konvertierung der Tabellen und
Datenbanknamen führt dazu, dass in der Datenbank keinerlei Tabellen mehr gefunden werden. Dateninhalte gehen bei diesen Operationen keine verloren.