Mysql und die Groß-/Kleinschreibung

Normalerweise sucht Mysql bei einer Suche mit „LIKE ‚%irgendwas%‘ “ ja unabhängig von der Groß-/Kleinschreibung!
Nur leider bei der von mir erstellten Adressdatenbank nicht…

Auf der Suche nach dem Problem bin ich auf folgende Lösung gestossen:
alter table adrdb convert to character set utf8 collate utf8_general_ci;

Das Problem lag darin dass bei einigen Tabellen der Character Set utf8 und collat utf8_bin angelegt wurden. Was man sieht wenn man mittels mysqldump und der Option „–all-databases“ einen Dump in eine Textdatei speichert und dort die genauen Definitionen betrachtet.

Bei mir sah es wie folgt aus:

CREATE TABLE `adrdb` (
`uid` bigint(11) NOT NULL auto_increment,
`firma` varchar(60) collate utf8_bin default NULL,
`titel` char(25) collate utf8_bin default NULL,
`vorname` varchar(35) collate utf8_bin default NULL,
`nachname` varchar(35) collate utf8_bin default NULL,
`strasse` char(55) collate utf8_bin default NULL,
`plz` char(10) collate utf8_bin default NULL,
`ort` char(50) collate utf8_bin default NULL,
`telefon` char(35) collate utf8_bin default NULL,
`fax` char(35) collate utf8_bin default NULL,
`mobil` char(35) collate utf8_bin default NULL,
`email` char(80) collate utf8_bin default NULL,
`webseite` char(80) collate utf8_bin default NULL,
`bemerkung` text collate utf8_bin,
`land` char(3) collate utf8_bin default NULL,
PRIMARY KEY (`uid`),
KEY `vorname` (`vorname`),
KEY `nachname` (`nachname`),
KEY `firma` (`firma`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’Adressdatenbank‘;

Die letzte Zeile ist in dem Fall am wichtigsten, COLLATE=utf8_bin schaltet also auf Binary Modus beim Suchen um. Mit dem oben angegebenen utf8_general_ci wird auf CaseInsensitive geschaltet und somit die Groß-/Kleinschreibung nicht mehr beim Suchen berücksichtigt!

Nach der Umstellung steht in der letzten Zeile einfach folgendes:
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=’Adressdatenbank‘;

Da „COLLATE=utf8_bin“ dort fehlt nehme ich an dass die Default Einstellung eigentlich korrekt ist und das Problem beim Importieren der Tabellendaten entstanden ist.

Schreibe einen Kommentar