【MySQL報錯】1366 - Incorrect string value: ‘\xE6\x80\xBB\xE7\xBB\x8F...‘ for column ‘name‘ at row 1

迦南男孩。發表於2020-09-23

某天插入資料時出現報錯
在這裡插入圖片描述
出現這個錯誤的原因是,資料庫的編碼格式為latin1 而我要將utf8的中文插入到資料庫中。

解決辦法:

找到表中欄位
在這裡插入圖片描述

改變欄位的字元編碼
在這裡插入圖片描述

總結:

MySQL中預設字符集的設定有四級:伺服器級,資料庫級,表級 。最終是欄位級 的字符集設定。注意前三種均為預設設定,並不程式碼你的欄位最終會使用這個字符集設定。請將你的插入資料字元編碼和表中欄位編碼統一。

相關的sql命令

修改資料庫字符集:

ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
 

把表預設的字符集和所有字元列(CHAR,VARCHAR,TEXT)改為新的字符集:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

只是修改表的預設字符集:

ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
 

修改欄位的字符集:

ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
 

檢視資料庫編碼:

SHOW CREATE DATABASE db_name;
 

檢視錶編碼:

SHOW CREATE TABLE tbl_name;

檢視欄位編碼:

SHOW FULL COLUMNS FROM tbl_name;

Linux 系統下解決辦法:
參考
https://www.cnblogs.com/afeiiii/p/13220997.html

相關文章