PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL: case sensitive unter unix ausschalten



Gumble
05.09.2006, 17:12
hallo *
ich habe 2 Systeme: ein XP Rechner, das devel-sys, hat eine mysql db (5.0.18-nt-max) am laufen. Dieser macht keine Probleme wenn ich mit hibernate@jboss drauf zugreifen. Bei dem eigentlichen Zielsystem (Suse 10.1) mit ner 5.0.22 gibts allerdings Probleme nach dem Motto:
"Table 'xxx' doesn't exists!"
Die mysql console bestaetigt dies. Die Tabellen sind alle Gross, der Code verwendet aber Kleinbuchstaben.
Frage: wie kann ich die case sensitivity global ausschalten? Ohne die Tabellen nochmal anzulegen oder meinen src-code zu veraendern. Liegt ja anscheinend an den character sets (charsets) und collation, doch ich konnte irgendwie nix brauchbares ergoogeln :(

EDIT: hab erst was falsches gepostet,
hier der Unix Rechner:


character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_results latin1
character_set_server latin1
character_set_system utf8
collation_connection latin1_swedish_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci

und das die XP machine:


character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci

Ok, ziemlich unterschiedlich, aber sollte das nicht egal sein, umlaute verwende ich eh nicht, und die collations enden beide mit ci was case insensitiv heisst!

EDIT2:
es muss wohl mit 'lower_case_table_names' zusammenhaengen. Weiss jemand wie man das in der console setzt?

TIA :hilfe2:

theton
06.09.2006, 11:59
Latin1 und UTF8 vertragen sich in Datenbanken normalerweise nicht. Umlaute werden nicht richtig uebernommen, genauso wie viele andere Sonderzeichen u.ae. lower_case_table_names ist genauso eine Variable, wie jede andere auch. Du kannst sie entweder in der my.cnf setzen oder per SET direkt im SQL-Server angeben (ist dann allerdings nach dem naechsten Restart der DB wieder weg).

Gumble
06.09.2006, 13:34
ok danke
habs nun folgende my.cnf am laufen:

[mysqld]
lower_case_table_names=1

default-character-set=utf8
default-collation=utf8_general_ci

character_set_server=utf8
collation_server=utf8_general_ci
die tabellen musste ich aber erneut bauen, nun scheint alles erstma zu gehen.