程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql提示:Illegal mix of collations for operation ‘UNION’

mysql提示:Illegal mix of collations for operation ‘UNION’

編輯:MySQL綜合教程

在保存或查詢數據時提示Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation \'=\' . 這裡是告訴你你要保存的數據與數據庫中的字符編碼不致導致數據無法正確保存了,解決辦法我們只要統一編碼即可。


語句很簡單

 代碼如下 復制代碼

<?php
$connection=mysql_connect("localhost","root","password"); //連接並選擇數據庫服務器
mysql_select_db("test",$connection);
$query="select * from users where name='你好'";
$result=mysql_query($query,$connection);
while($row=mysql_fetch_array($result))
{
echo "用戶ID:".$row[0]."<br>"; //也可以寫做$row["user_id"]
echo "用戶名:".$row[1]."<br>"; //也可以寫做$row["user_name"]
}
?>

運行結果提示

Error: Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='

意思是說:操作符“=”比較的字符集不一致,一個是gbk_chinese_ci,一個是latin1_swedish_ci。

首先、查看mysql的my.cnf,確認為utf8

 代碼如下 復制代碼


mysql> show variables like "%char%";

+--------------------------+-------------------------------------+

| Variable_name            | Value                               |

+--------------------------+-------------------------------------+

| character_set_client     | utf8                                |

| character_set_connection | utf8                                |

| character_set_database   | latin1                              |

| character_set_filesystem | binary                              |

| character_set_results    | utf8                                |

| character_set_server     | utf8                                |

| character_set_system     | utf8                                |

| character_sets_dir       | D:/MySQL Server 5.0/share/charsets/ |

+--------------------------+-------------------------------------+

8 rows in set (0.00 sec)


 

 

mysql> show variables like "%coll%";

+----------------------+-------------------+

| Variable_name        | Value             |

+----------------------+-------------------+

| collation_connection | utf8_general_ci   |

| collation_database   | latin1_swedish_ci |

| collation_server     | utf8_general_ci   |

+----------------------+-------------------+

3 rows in set (0.00 sec)

然後將數據庫中所有編碼方式改為統一:

 代碼如下 復制代碼


mysql> set character_set_database=utf8;

Query OK, 0 rows affected (0.00 sec)

 

mysql> set collation_database= utf8_general_ci

重新查看字符集及數據表字段編碼字符是否一致:


總結

utf8_bin
utf8_general_ci
utf8_unicode_ci

utf8_bin 與 utf8_general_ci 可以

utf8_bin 與 utf8_unicode_ci 可以

utf8_general_ci 與 utf8_unicode_ci 不可以

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved