Categories: Linux

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.

Manfred

Recent Posts

Proxmox VE 9 – Netzwerk Interface Zuordnung ändern

Ich bin es gewohnt unter /etc/systemd/network/10-nic0.link die Zurodnung des Netzwerk Interfaces zu seinem Namen "nic0"…

4 Wochen ago

Nextcloud – PHP Imagick Fehlermeldung

Nextcloud liefert in den Administrationseinstellungen gelegentlich diese Fehlermeldung: PHP Imagick-Modul Das PHP-Modul "imagick" in dieser…

2 Monaten ago

Postsible: Warum ich meinen eigenen Mail-Server gebaut habe

Ein Mail-Server-Setup das nicht nervt — weil alle anderen Lösungen nervig waren "Wie schwer kann…

6 Monaten ago

M$ & Office 365 haben mir gerade wieder Lebenszeit gekostet – Error 0-2048 (0)

<Sarkasmus>Die besten Softwareentwickler arbeiten bei Microsoft!</Sarkasmus> Als Endanwender würde ich mir Fehlermeldungen erwarten die aussagekräftig…

6 Monaten ago

ESET ohne Web Access Protection Modul installieren

Auf einem Linux Server braucht man eventuell das WAP Modul von ESET nicht, der Weg…

10 Monaten ago

Veeam Agent for Linux ignoriert .vdi Files

Auf einem Linux System mit installiertem Veeam Agent wird auf File-Level Basis eine Sicherung des…

1 Jahr ago