Bug #70346 | Illegal mix of collations (gbk_chinese_ci,COERCIBLE) | ||
---|---|---|---|
Submitted: | 15 Sep 2013 4:04 | Modified: | 10 Dec 2013 6:47 |
Reporter: | qinglin zhang (OCA) | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: Replication | Severity: | S1 (Critical) |
Version: | 5.6.16 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | COERCIBLE 1267, gbk_chinese_ci |
[15 Sep 2013 4:04]
qinglin zhang
[15 Sep 2013 4:07]
qinglin zhang
by the way, the master's binlog_format=statement
[15 Sep 2013 8:47]
qinglin zhang
the error stack lies bellow: [Thread 0x7f3630800700 (LWP 2400) exited] 904 if (conv_errors || !(conv= new Item_string(cstr.ptr(), cstr.length(), (gdb) p conv_errors $67 = 3 (gdb) bt #0 Item_string::safe_charset_converter (this=0x7f34e0005708, tocs=0x1012200) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/item.cc:904 #1 0x00000000006a7739 in agg_item_set_converter (coll=..., fname=0xa8e39b "concat", args=0x7f34e0005ad0, nargs=2, flags=<value optimized out>, item_sep=1) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/item.cc:1824 #2 0x00000000006f0cb2 in agg_item_charsets_for_string_result (this=<value optimized out>) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/item.h:1569 #3 agg_arg_charsets_for_string_result (this=<value optimized out>) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/item_func.h:178 #4 Item_func_concat::fix_length_and_dec (this=<value optimized out>) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/item_strfunc.cc:614 #5 0x00000000006d68bd in Item_func::fix_fields (this=0x7f34e0005a50, thd=0xa4e2550, ref=<value optimized out>) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/item_func.cc:227 #6 0x00000000006ec5eb in Item_str_func::fix_fields (this=0x7f34e0005a50, thd=0xa4e2550, ref=<value optimized out>) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/item_strfunc.cc:121 #7 0x00000000005411ad in setup_fields (thd=0xa4e2550, ref_pointer_array=0x0, fields=<value optimized out>, mark_used_columns=<value optimized out>, sum_func_list=0x0, allow_sum_func=<value optimized out>) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/sql_base.cc:7904 #8 0x000000000056fe18 in mysql_prepare_insert (thd=0xa4e2550, table_list=0x7f34e0004d58, table=0x0, fields=..., values=0x7f34e0005498, update_fields=..., update_values=..., duplic=DUP_ERROR, where=0x7f363068a7c8, select_insert=false, check_fields=true, abort_on_warning=false) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/sql_insert.cc:1386 #9 0x0000000000571c13 in mysql_insert (thd=0xa4e2550, table_list=0x7f34e0004d58, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/sql_insert.cc:724 #10 0x0000000000584900 in mysql_execute_command (thd=0xa4e2550) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/sql_parse.cc:3060 #11 0x0000000000587b24 in mysql_parse (thd=0xa4e2550, rawbuf=<value optimized out>, length=90, parser_state=0x7f363068bbb0) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/sql_parse.cc:5805 #12 0x0000000000588f78 in dispatch_command (command=COM_QUERY, thd=0xa4e2550, packet=<value optimized out>, packet_length=812170392) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/sql_parse.cc:1060 #13 0x000000000062704d in do_handle_one_connection (thd_arg=<value optimized out>) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/sql_connect.cc:1409 #14 0x000000000062719c in handle_one_connection (arg=0xa4e2550) at /u01/guyue.zql/workplace/error_Percona-Server-5.518/sql/sql_connect.cc:1315 #15 0x0000003659e077e1 in start_thread () from /lib64/libpthread.so.0 #16 0x0000003659ae68ed in clone () from /lib64/libc.so.6
[18 Sep 2013 5:56]
qinglin zhang
if(value_item->collation.derivation > DERIVATION_IMPLICIT){ collation.set(value_item->collation.collation, value_item->collation.derivation); }else{ collation.set(value_item->collation.collation,DERIVATION_IMPLICIT); } 这样可以暂时绕过此问题
[3 Dec 2013 19:52]
Sveta Smirnova
Thank you for the report. Please provide output of SHOW VARIABLES LIKE '%char%' and SHOW VARIABLES LIKE '%col%' and your configuration file.
[4 Dec 2013 8:17]
qinglin zhang
As a matter of fact, it is caused by optinization of name_conset, there is confict while choosing result character.The information goes like this: root@127.0.0.1 : (none) 16:12:18> show variables like '%char%'; +--------------------------+-----------------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /u01/guyue.zql/data5518/share/charsets/ | +--------------------------+-----------------------------------------+ root@127.0.0.1 : (none) 16:12:44> SHOW VARIABLES LIKE '%col%'; +---------------------------+-------------------+ | Variable_name | Value | +---------------------------+-------------------+ | collation_connection | gbk_chinese_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | | protocol_version | 10 | | slave_compressed_protocol | OFF | +---------------------------+-------------------+ port of configurateion: my.cnf 10 [mysqld] 11 max_connections=2000 12 max_user_connections=2000 13 sort_buffer_size=1M 14 core-file 15 #### Baes dir #### 16 basedir = /u01/guyue.zql/data5518 17 datadir = /u01/guyue.zql/data5518/data 18 tmpdir = /u01/guyue.zql/data5518/run 19 socket = /u01/guyue.zql/data5518/run/mysql.sock 20 #### Base configure info #### 21 port = 3506 22 skip-name-resolve 23 old_passwords = 0 24 lower_case_table_names = 1 25 open_files_limit = 65535 26 read_rnd_buffer_size = 5M 27 max_allowed_packet = 24M 28 max_connect_errors = 50000 29 #table_definition_cache = 1200 30 #thread_cache_size=256 31 #table_cache=4096 32 33 binlog_format=row 34 #### Log info #### 35 log-error = /u01/guyue.zql/data5518/log/alert.log 36 #slow-query-log = 1 37 slow-query-log-file = /u01/guyue.zql/data5518/log/slow.log 38 log-slow-admin-statements 39 log-queries-not-using-indexes 40 #long_query_time = 1 41 #general-log = 1 42 #general-log-file = /u01/guyue.zql/data5518/log/general.log 43 44 #### Binary log && Relay log #### 45 log-bin = /u01/guyue.zql/data5518/log/mysql-bin 46 log-slave-updates = 1 47 relay-log = /u01/guyue.zql/data5518/log/mysqld-relay-bin 48 relay-log-index = /u01/guyue.zql/data5518/log/mysqld-relay-bin.index 49 master-info-file = /u01/guyue.zql/data5518/log/master.info 50 relay-log-info-file = /u01/guyue.zql/data5518/log/relay-log.info 51 #expire_logs_days=1 52 max_binlog_size = 500M 53 max_binlog_cache_size = 512M 54 relay_log_purge=0 55 ### Server id ####
[5 Dec 2013 18:46]
Sveta Smirnova
Thank you for the feedback. Verified as described.
[5 Dec 2013 18:46]
Sveta Smirnova
test case for MTR
Attachment: rpl_bug70346.test (application/octet-stream, text), 419 bytes.
[5 Dec 2013 18:49]
Sveta Smirnova
Workaround: use convert(j using gbk) instead of j in concat. Only procedure is affected: if run INSERT separately character set information replicates fine.
[10 Dec 2013 6:47]
qinglin zhang
HI. It just affect procedure as described before, for it is introduced by name_const function, what I wonder is when it can be fixed?