Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
3.2.0
-
None
-
MySQL Server 8.4
MariaDB Connector/J 3.2.0 or later
Description
I am using the collation "utf8mb4_swedish_ci" in MySQL server and to get the correct collation for clients I have used a init_connect setting that sets the collation_connection variable to the servers collation
[mysqld]
|
character_set_server=utf8mb4
|
collation_server=utf8mb4_swedish_ci
|
init_connect='SET collation_connection = @@collation_database;'
|
After upgrading to at least maria db connector/j version 3.2.0 if I check the collation_connection variable its value is utf8mb4_0900_ai_ci which leads to a lot of illegal mix of collation errors when running my application.
From show variables like '%collation%'
|Variable_name |Value |
|
|-----------------------------|------------------|
|
|collation_connection |utf8mb4_0900_ai_ci|
|
|collation_database |utf8mb4_swedish_ci|
|
|collation_server |utf8mb4_swedish_ci|
|
|default_collation_for_utf8mb4|utf8mb4_0900_ai_ci|
|
I have done some digging and the reason seems to be the implicit SET NAMES call that was introduced in CONJ-1092, since that call doesn't have a COLLATE it collation_connection becomes the default value. (commit 0c13897eea649a4195161a27b3f8884cbeda8415)
As far as I can tell init_connect statements are executed after that SET NAMES call though, so I don't understand why my init_connect doesn't work to reset collation_connection to the correct value.
I have also tried using SET NAMES with COLLATE in my init_connect but I get the same behavior (collation_connection is still utf8mb4_0900_ai_ci)
Attachments
Issue Links
- is caused by
-
CONJ-1092 ensure respecting server collation
-
- Closed
-
Activity
Fix Version/s | 3.4.2 [ 29900 ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Component/s | configuration [ 14211 ] | |
Resolution | Fixed [ 1 ] | |
Status | In Progress [ 3 ] | Closed [ 6 ] |
Fix Version/s | 3.5.0 [ 29943 ] | |
Fix Version/s | 3.4.2 [ 29900 ] |
I need to dig a bit. Until then, a workaround for this is to set option `initSql`, like