query_params & collatie
Hoi,
Voor MySQLi heb ik een eigen query_params() in de steigers, maar er gaat nog iets mis bij het uitvoeren er van, ik krijg dan een melding in PHP als volgt:
Mijn uitdaging is om te achterhalen hoe dat komt. De melding verdwijnt en data verschijnt:
1. als ik weglaat, maar ik wil die juist op unicode hebben staan
2. in een niet geparametriseerde query, maar da's niet handig
3. als ik in de query zelf "?" vervang voor "COLLATE utf8mb4_unicode_ci = ?"
Die laatste is het meest veelzeggend, want ik vergelijk de inhoud van "?" met een MySQL functie die een kolom (utf8mb4_unicode_ci) als inpunt heeft, maar kennelijk als uitvoer utf8mb4_general_ci heeft. Waar stel je dat in?
Zowel collation_connection, collation_database, als collation_server staan op utf8mb4_unicode_ci, net als de server, de database, de tabellen en alle tekstkolommen. Ik gebruik netjes set_charset() om de character-set in te stellen, op dat niveau zit het hem niet denk ik.
Als ik de functie weglaat en alleen de kolom noem dan blijft de foutmelding ook afwezig.
Ik vrees dat het gaat om deze MySQL bug: https://bugs.mysql.com/bug.php?id=24690
Gefixed voor 6 (mysql 5.6?) echter op het systeem dat ik gebruik draait MariaDB 5.5.49.
Echter in het changelog staat in 2010 "Pushed into 5.5.3-m3", dus ik vermoed dat het toch iets anders moet zijn?
Heeft imand een behulpzame suggestie?
Voor MySQLi heb ik een eigen query_params() in de steigers, maar er gaat nog iets mis bij het uitvoeren er van, ik krijg dan een melding in PHP als volgt:
Quote:
Illegal mix of collations (utf8mb4_unicode_ci,COERCIBLE) and (utf8mb4_general_ci,COERCIBLE) for operation '='
Mijn uitdaging is om te achterhalen hoe dat komt. De melding verdwijnt en data verschijnt:
1. als ik weglaat, maar ik wil die juist op unicode hebben staan
2. in een niet geparametriseerde query, maar da's niet handig
3. als ik in de query zelf "?" vervang voor "COLLATE utf8mb4_unicode_ci = ?"
Die laatste is het meest veelzeggend, want ik vergelijk de inhoud van "?" met een MySQL functie die een kolom (utf8mb4_unicode_ci) als inpunt heeft, maar kennelijk als uitvoer utf8mb4_general_ci heeft. Waar stel je dat in?
Zowel collation_connection, collation_database, als collation_server staan op utf8mb4_unicode_ci, net als de server, de database, de tabellen en alle tekstkolommen. Ik gebruik netjes set_charset() om de character-set in te stellen, op dat niveau zit het hem niet denk ik.
Als ik de functie weglaat en alleen de kolom noem dan blijft de foutmelding ook afwezig.
Ik vrees dat het gaat om deze MySQL bug: https://bugs.mysql.com/bug.php?id=24690
Gefixed voor 6 (mysql 5.6?) echter op het systeem dat ik gebruik draait MariaDB 5.5.49.
Echter in het changelog staat in 2010 "Pushed into 5.5.3-m3", dus ik vermoed dat het toch iets anders moet zijn?
Heeft imand een behulpzame suggestie?
Er zijn nog geen reacties op dit bericht.