diff --git a/client/mysql.cc b/client/mysql.cc index 812673d34c2..33014b27ae8 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -2549,6 +2549,7 @@ sql_real_connect(char *host,char *database,char *user,char *password, select_limit,max_join_size); mysql_options(&mysql, MYSQL_INIT_COMMAND, init_command); } + mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset); if (!mysql_real_connect(&mysql, host, user, password, database, opt_mysql_port, opt_mysql_unix_port, connect_flag | CLIENT_MULTI_QUERIES)) diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 514de2a87a6..41fde189eb5 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -2241,7 +2241,8 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user, const char *save=charsets_dir; if (mysql->options.charset_dir) charsets_dir=mysql->options.charset_dir; - mysql->charset=get_charset_by_name(mysql->options.charset_name, + mysql->charset=get_charset_by_csname(mysql->options.charset_name, + MY_CS_PRIMARY, MYF(MY_WME)); charsets_dir=save; } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 78b6a03e2fa..b1e0b2dc91d 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -664,8 +664,17 @@ check_connections(THD *thd) thd->max_client_packet_length= uint4korr(net->read_pos+4); if (!(thd->variables.character_set_client= get_charset((uint) net->read_pos[8], MYF(0)))) + { thd->variables.character_set_client= global_system_variables.character_set_client; + thd->variables.collation_connection= + global_system_variables.collation_connection; + } + else + { + thd->variables.collation_connection= + thd->variables.character_set_client; + } end= (char*) net->read_pos+32; } else