首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL "Incorrect string value" 錯誤排查與修復

     編輯:MySQL 綜合教學

MySQL "Incorrect string value" 錯誤排查與修復

執行跨表插入 INSERT INTO 表2 SELECT * FROM 表1 時拋出 Incorrect string value 錯誤,目標表數據變為問號。根因是源表與目標表列級字符集不一致。

現象復現

  • 源表(表1)相關列 Collation = gbk_chinese_ci(或 gbk)。
  • 目標表(表2)相關列 Collation = latin1_swedish_ci(或 latin1)。
  • 插入時 MySQL 嘗試將 gbk 字節按 latin1 解碼,導致非法字節序列,報錯並寫入問號。
錯誤截圖
數據變問號

修復方案

將目標表相關列字符集修改為與源表一致(如 gbk):

ALTER TABLE 表2 MODIFY 列名 列類型 CHARACTER SET gbk COLLATE gbk_chinese_ci;
-- 或整表轉換
ALTER TABLE 表2 CONVERT TO CHARACTER SET gbk;
修改後正常

避坑指南

  • 建表時顯式指定 CHARSET 與 COLLATE,避免依賴服務器默認值(不同版本/安裝方式默認值可能不同)。
  • 跨庫/跨表操作前,用 SHOW CREATE TABLE 對比字符集定義。
  • 應用層連接串統一加上 characterEncoding=utf8(或業務約定字符集),確保傳輸層編碼一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved