Home >Backend Development >PHP Tutorial >mysql Illegal mix of collations error
PHP连mysql时出现问题:
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='
mysql 状态:
<code> show variables like 'colla%';+----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_unicode_ci | | collation_server | utf8_unicode_ci | show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | </code>
相关储存过程代码:
<code>CREATE PROCEDURE `proc_str`(in strrr varchar(30) ,in useriid varchar(30)) begin declare i int; SET i=1; update imgupdate.bullentin set BoardPosition=replace(BoardPosition,concat(',',substring_index(strrr,',',1),','),',') where GroupUsers=useriid ;//replace过程出错 while(select (length(strrr) -length(substring_index(strrr,',',i))) )>0 do set i=i+1; update imgupdate.bullentin set BoardPosition=replace(BoardPosition,concat(',',(substring(substring_index(strrr,',',i),length(substring_index(strrr,',',i-1))+2)),','),',') where GroupUsers=useriid ; end while; select 1; end;</code>
PHP连mysql时出现问题:
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='
mysql 状态:
<code> show variables like 'colla%';+----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_unicode_ci | | collation_server | utf8_unicode_ci | show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | </code>
相关储存过程代码:
<code>CREATE PROCEDURE `proc_str`(in strrr varchar(30) ,in useriid varchar(30)) begin declare i int; SET i=1; update imgupdate.bullentin set BoardPosition=replace(BoardPosition,concat(',',substring_index(strrr,',',1),','),',') where GroupUsers=useriid ;//replace过程出错 while(select (length(strrr) -length(substring_index(strrr,',',i))) )>0 do set i=i+1; update imgupdate.bullentin set BoardPosition=replace(BoardPosition,concat(',',(substring(substring_index(strrr,',',i),length(substring_index(strrr,',',i-1))+2)),','),',') where GroupUsers=useriid ; end while; select 1; end;</code>
在connect里charset='utf8'