[MDEV-22981] Bad "default-character-set" option in [client] option group 50-client.cnf on Debian/Ubuntu Created: 2020-06-23  Updated: 2020-10-23  Resolved: 2020-10-23

Status: Closed
Project: MariaDB Server
Component/s: Configuration, Packaging, Platform Debian, Scripts & Clients
Affects Version/s: 10.5.4
Fix Version/s: 10.5.4

Type: Bug Priority: Major
Reporter: Geoff Montee (Inactive) Assignee: Otto Kekäläinen
Resolution: Fixed Votes: 1
Labels: None

Issue Links:
Blocks
blocks MDEV-19123 Change default charset from latin1 to... Open
Duplicate
is duplicated by MDEV-24006 mysqlbinlog command does not work on ... Closed
Relates
relates to MDEV-22982 Client --help options break when conf... Open

 Description   

The 50-client.cnf configuration file on Debian/Ubuntu currently sets default-character-set:

$ cat /etc/mysql/mariadb.conf.d/50-client.cnf 
#
# This group is read by the client library
# Use it for options that affect all clients, but not the server
#
 
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4
 
# Example of client certificate usage
# ssl-cert=/etc/mysql/client-cert.pem
# ssl-key=/etc/mysql/client-key.pem
#
# Allow only TLS encrypted connections
# ssl-verify-server-cert=on
 
# This group is *never* read by mysql client library, though this
# /etc/mysql/mariadb.cnf.d/client.cnf file is not read by Oracle MySQL
# client anyway.
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]

Not all clients support the default-character-set option, so this causes errors when those clients are used. For example, mysqlbinlog doesn't support it:

$ mysqlbinlog --help 
mysqlbinlog: unknown variable 'default-character-set=utf8mb4'

And neither does mysqlslap:

$ mysqlslap --help 
mysqlslap: unknown variable 'default-character-set=utf8mb4'

This option should not be in the [client] option group, since not all clients support it.



 Comments   
Comment by Otto Kekäläinen [ 2020-06-24 ]

I am re-opening this issue for further work.

The commit 039cb6f6bfaaeafeb87e6d10c88be2cac87654e7 completely reverts and nullifies the previous change to start using utf8mb4 by default. You should not just remove it, in particular without any consultation with people who did the prior work such as me and robertbindar and @serg in https://github.com/MariaDB/server/pull/1504/commits

We have had UTFMB4 by default in Debian for years and nobody has reported that mysqlbinlog or other tools would be incompatible with it. If they are, shouldn't those tools be updated to support that option? Or this config section moved to another name? Just bluntly disabling it with an inline comment (but without any explaining lines) is not a good option. This needs more work.

Comment by Sergei Golubchik [ 2020-06-25 ]

It doesn't revert and nullify your change, utf8mb4 is still the default for the server, so all tables will use utf8mb4 by default and data will be stored as utf8mb4 by default.

The mariadb client should not be forced to use utf8mb4 by default, a better default behavior is to auto-detect the character set from the current locale. This is what it does now.

Some other clients don't recognize default-character-set at all.

So, in short, while utf8mb4 for the server is fine, for the client it is not.

Comment by Otto Kekäläinen [ 2020-06-27 ]

Final fix (removal of it completely) is included in https://github.com/MariaDB/server/pull/1600

Comment by Sergei Golubchik [ 2020-10-23 ]

the bug itself (default-character-set in [client]) was fixed in 10.5.4.
I'm closing it again so that users could see the that bug was fixed and when.

your PR meanwhile was merged too.

Generated at Thu Feb 08 09:18:57 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.