mysql關聯兩張表時的編碼問題及解決辦法
阿新 • • 發佈:2020-01-09
Mysql關聯兩張表時,產生錯誤提示Illegal mix of collations
1、先用工具把資料庫、兩張表的編碼方式改變
2、這步很重要,需要改變欄位的編碼方式。
ALTER TABLE `表名` CHANGE `dev_chancode` `欄位` VARCHAR(32) CHARACTER SET gbk NOT NULL;
總結:在建表時一定注意統一的編碼方式,後續搞來搞去超級麻煩。
如何解決MySQL表編碼轉換問題
- 將待匯出的資料表的表結構匯出(可以用Phpmyadmin、mysqldump等,很簡單就不說了),然後將匯出的create table語句的CHARSET=latin1改為CHARSET=utf8,在目標庫newdbname中執行該create table語句把表結構建好,接下來開始匯出-匯入資料。命令:
- ./mysqldump -d DB_Dig > /usr/local/tmp/tables.sql
- 命令列:進入mysql命令列下,mysql -hlocalhost -uroot -p*** dbname
- 執行SQL select * from tbname into outfile '/usr/local/tbname.sql';
- 將tbname.sql轉碼為utf-8格式,建議使用UltraEditor,可以直接使用該編輯器的'轉換->ASCII到UTF-8(Unicode編輯)',或者將檔案另存為UTF-8(無BOM)格式
- 在mysql命令列下執行語句 set character_set_database=utf8; 注:設定mysql的環境變數,這樣mysql在下一步讀取sql檔案時將以utf8的形式去解釋該檔案內容
- 在mysql命令列下執行語句 load data infile 'tbname.sql' into table newdbname.tbname;
以上就是本次介紹的全部知識點內容,感謝大家的學習和對我們的支援。