>백엔드 개발 >PHP 튜토리얼 >mysql Illegal mix of collations error

mysql Illegal mix of collations error

WBOY
WBOY원래의
2016-06-06 20:09:061440검색

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'

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.