Hinweise zu mySQL collation: Unterschied zwischen den Versionen

Aus GEVITAS
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 15: Zeile 15:


;Setzt den Standard für eine Datenbank:
;Setzt den Standard für eine Datenbank:
:ALTER DATABASE mediarent CHARACTER SET latin1 COLLATE latin1_german1_ci;
:ALTER DATABASE reflex CHARACTER SET latin1 COLLATE latin1_german1_ci;


'''Standard''' heisst aber nur, dass '''neue''' Felder bzw. Tabellen diese Collation bekommen, die '''bestehenden''' Felder/Tabellen werden '''nicht''' geändert!
'''Standard''' heisst aber nur, dass '''neue''' Felder bzw. Tabellen diese Collation bekommen, die '''bestehenden''' Felder/Tabellen werden '''nicht''' geändert!
Zeile 21: Zeile 21:
;Zum Ändern muss das hier verwendet werden:
;Zum Ändern muss das hier verwendet werden:


:ALTER TABLE `reflex`.`maufko_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;
:ALTER TABLE `maufko_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;


:ALTER TABLE `reflex`.`mauffu_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;
:ALTER TABLE `mauffu_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;


:ALTER TABLE `reflex`.`maufpo_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;
:ALTER TABLE `maufpo_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;
 
;Das kann man auch im REFLEX-Checker (ab Vers. 4.12.23.0310) machen:
:Im SQL-Editor rechte Maustaste auf die Tabelle und auswählen mySQL ⇒ Collation auf " latin1_german1_ci" setzen

Aktuelle Version vom 10. März 2023, 12:14 Uhr

Worum es geht

Beim Ausführen eines Programmteils unter mySQL kommt es zu dieser Fehlermeldung:


Illegal mix of collations (latin1_german1_ci, IMPLICIT) and (latin1_swedish_ci, IMPLICIT) for operation '<>'

Hier verwendet MySQL für die Datenbank als Standard die Collation (Zeichensatz) „latin1_swedish_ci“, der Standard bei einigen mySQL-Versionen. Als Folge nimmt die Datenbank für neue String-Felder immer als Standard die Collation „latin1_swedish_ci“!

Ändern der collation

Setzt den Standard für eine Tabelle
ALTER TABLE `maufko_version` COLLATE = latin1_german1_ci ;
Setzt den Standard für eine Datenbank
ALTER DATABASE reflex CHARACTER SET latin1 COLLATE latin1_german1_ci;

Standard heisst aber nur, dass neue Felder bzw. Tabellen diese Collation bekommen, die bestehenden Felder/Tabellen werden nicht geändert!

Zum Ändern muss das hier verwendet werden
ALTER TABLE `maufko_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;
ALTER TABLE `mauffu_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;
ALTER TABLE `maufpo_version` CONVERT TO CHARACTER SET latin1 COLLATE latin1_german1_ci ;
Das kann man auch im REFLEX-Checker (ab Vers. 4.12.23.0310) machen
Im SQL-Editor rechte Maustaste auf die Tabelle und auswählen mySQL ⇒ Collation auf " latin1_german1_ci" setzen