MYSQL Collation

derocco

Lt. Junior Grade
Registriert
Nov. 2015
Beiträge
321
Wie kann es sein, dass ein Select geht:

SELECT w.LicPlate, w.validfrom, w.validto, loc.* --u., r.
FROM whitelist w
join reason r on r.ID = w.reasonID
join .sers u on u.ID = r.userID
join locations loc on loc.location_id = SUBSTR(u.vorname,13,10);

Create View:

CREATE OR REPLACE VIEW allWhiteLists AS
SELECT w.LicPlate, w.validfrom, w.validto, loc.* --u., r.
FROM whitelist w
join reason r on r.ID = w.reasonID
join .sers u on u.ID = r.userID
join locations loc on loc.location_id = SUBSTR(u.vorname,13,10);

Select auf der VIEW schlägt dann fehl
select * from allWhiteLists;

->
Error: Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
SQLState: HY000
ErrorCode: 1267
 
Naja, MadMax...du sagst es ja schon, die Tabellen haben die Collation. Also warum geht dann der SELECT ohne view? Weil der besteht ja auch nur aus Tabellen...
Ergänzung ()

PS: Also ich würde mal annehmen, dass die View Spalten per default andere coallations bekommen, wie die Select Tabelle hatte und dadurch dann der Diff entsteht.
 
Ich suche gerade eine Quellle dayu, finde aber nichts gescheites.

Wenn ich das richtig im kopf habe, werden bei einem Select die daten implizit in die default coallition der DB konvertiert und in eine temporaere Tabelle gelegt.
Bei einem view hast du diese temp. Tabelle nicht und vergleichst entsprechend Zeichen verschiedener character sets in ihren originaltabellen.

Wenn du da ne quelle zu hast, gern her damit
 
Was steht denn in den locations?

Da würde ich erstmal davon ausgehen, daß das um die Ohren fliegt.

MySQL hat halt die Unart, collation an allen möglichen Ecken unterzubringen. Muß man aufpassen.

Ohne die Daten oder die Umgebung zu kennen wäre mein Vorschlag, die Datenbank zu exportieren und dann den Dump so anzupassen, daß man damit eine neue Datenbank erstellen kann mit uniformen Zeichensatz- utf8mb4 müßte das bei MySQL sein — und uniformer collation. Die sollte sich bis auf CI/CS aus utf8mb4 herleiten.
 
  • Gefällt mir
Reaktionen: madmax2010
Vielen dank das hat geholfen.
Wenn jemand mal das Problem hat: Wichtig nach dem ändern der COLLATION die View auch nochmal neu erzeugen. Irgendwie bliebt das da gespeichert und will dann trotz anderer collation nicht....
 
  • Gefällt mir
Reaktionen: Ice-Lord

Ähnliche Themen

Zurück
Oben