=== modified file 'libmysql/client.c' --- libmysql/client.c 2008-10-26 17:32:37 +0000 +++ libmysql/client.c 2008-11-27 14:15:29 +0000 @@ -2256,7 +2256,12 @@ /* 4.1 server and 4.1 client has a 32 byte option flag */ int4store(buff,client_flag); int4store(buff+4, net->max_packet_size); - buff[8]= (char) mysql->charset->number; + /* Servers < 6.0 don't know characterset number 45 (new utf8), so we need to send + corresponding number 33 instead */ + if (mysql->charset->number == 45 && mysql_get_server_version(mysql) < 60000) + buff[8] = 33; + else + buff[8]= (char) mysql->charset->number; bzero(buff+9, 32-9); end= buff+32; } === modified file 'libmysql/libmysql.c' --- libmysql/libmysql.c 2008-10-17 11:03:46 +0000 +++ libmysql/libmysql.c 2008-11-27 11:51:18 +0000 @@ -439,7 +439,12 @@ if (mysql->server_capabilities & CLIENT_SECURE_CONNECTION) { - int2store(end, (ushort) mysql->charset->number); + /* Servers < 6.0 don't know characterset number 45 (new utf8), so we need to send + corresponding number 33 instead */ + if (mysql->charset->number == 45 && mysql_get_server_version(mysql) < 60000) + int2store(end, 33); + else + int2store(end, (ushort) mysql->charset->number); end+= 2; }