Bug #11673 mysqlbinlog won't run when [client] includes default-character-set=utf8
Submitted: 30 Jun 2005 17:10 Modified: 30 Jun 2005 20:51
Reporter: Bruce Dembecki Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: Command-line Clients Severity:S2 (Serious)
Version:4.1.12 OS:Mac OS X (OS X)
Assigned to: CPU Architecture:Any

[30 Jun 2005 17:10] Bruce Dembecki
Description:
Adding a default-character-set variable to my.cnf's [client] group prevents mysqlbinlog from running...

Clearly mysqlbinlog should get enough info in the binary log to tell it what character set each query is run against and may not need to know the default-character-set - but other mysql command line tools do need to be told this... so we need to have the variable present in my.cnf, and we need mysqlbinlog to run... I'm thinking ignoring the input variable here would be better than forcing mysqlbinlog to quit.

How to repeat:
[client]
default-character-set=utf8
".my.cnf" 15L, 234C written
[ZBeeb:~] bruce% mysqlbinlog
mysqlbinlog: unknown variable 'default-character-set=utf8'
[ZBeeb:~] bruce% 

Suggested fix:
If mysqlbinlog doesn't need to know about the default character sets, make it at least ignore the variable default-character-set rather than stop running... if it needs to know, then that pretty much tells you what your next steps would need to be :-)
[30 Jun 2005 19:32] Miguel Solorzano
From the Manual:

http://dev.mysql.com/doc/mysql/en/option-files.html

 "The [client] option group is read by all client programs (but not by mysqld). This allows you to specify options that apply to every client. For example, [client] is the perfect group to use to specify the password that you use to connect to the server. (But make sure that the option file is readable and writable only by yourself, so that other people cannot find out your password.) Be sure not to put an option in the [client] group unless it is recognized by all client programs that you use. Programs that do not understand the option quit after displaying an error message if you try to run them."

For to avoid that a client program aborts you can use the prefix loose
like explained in the Manual.
[30 Jun 2005 20:03] Bruce Dembecki
OK.. not a bug.. that's fine as a classification...

HOWEVER...

I need to tell various clients then that they need to use utf8 as their default character set... I need it for mysqlimport, mysqldump, mysql of course... And that's without looking at the full list of command line paps you support, just the ones I've ALREADY run into trouble if I don't set the default character set.

There may be other where I run into trouble... and I won't know until after I have experienced a problem.

The ability to put a default character set for all clients is important... while this may not be a bug can it be a feature request... can we please have mysqlbinlog not complain about default-character-set when it is encountered.
[30 Jun 2005 20:51] Miguel Solorzano
Right how I said you using the prefix loose:

" The --loose prefix can be useful when you run programs from multiple installations of MySQL on the same machine, at least if all the versions are as recent as 4.0.2. This prefix is particularly useful when you list options in an option file. An option that may not be recognized by all versions of a program can be given using the --loose  prefix (or loose in an option file). Versions of the program that do not recognize the option issue a warning and ignore it. This strategy requires that versions involved be 4.0.2 or later, because earlier versions know nothing of the --loose convention"

so in your my.cnf

loose-variable_name=xxx