日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 1366 hy000_ERROR 1366 (HY000): Incorrect string value错误解决办法

發布時間:2025/3/20 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 1366 hy000_ERROR 1366 (HY000): Incorrect string value错误解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文地址:http://www.dutycode.com/post-5.html

除非注明,文章均為 www.dutycode.com 原創,歡迎轉載!轉載請注明本文地址,謝謝。

錯誤詳情如上圖:

原因主要是:字符集的問題

解決辦法,將數據庫、數據表以及數據表中的字段全部統一設置成utf8即可。

參考文章:

1、http://www.oseye.net/question/74

2、http://www.cnblogs.com/shishm/articles/1614407.html

3、http://tree-161219.iteye.com/blog/745054

在一個用Struts + Spring+ Hibernate +

Mysql架構的的項目里,通過前臺表單向后臺MySql數據庫添加

數據,當遇到提交中文信息的時候,問題總是比較多,我見過的出錯的情況有兩種:

1)錯誤情況1:

ERROR

1366 (HY000): Incorrect string value

Incorrect string value:

'\xA1\xAA\xA1\xAA\xB0\xFC...' for column 'content' at row 1?Hibernate

flushing: Could not execute JDBC batch update; uncategorized SQLException for

SQL [insert into blog (comments, content, createdate, description, tid, title,

uid, id) values (?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366];

Incorrect string value: '\xA1\xAA\xA1\xAA\xB0\xFC...' for column 'content' at

row 1; nested exception is java.sql.BatchUpdateException: Incorrect string

value: '\xA1\xAA\xA1\xAA\xB0\xFC...' for column 'content' at row 1

2)錯誤情況2:

提交時不報錯,但是數據庫中插入的中文顯示為如“???”的亂碼,同時在控制臺打印的也是“???”的亂碼字符。

因此涉及到中文字符的問題時,要格外注意“字符集編碼”的問題。

====================

總結一下,在這樣一個項目里,涉及到設置字符集的地方有:

1、JSP頁面文件的編碼:

pageEncoding="utf-8"%>

2、Struts、Spring配置文件(XML)的編碼:

version="1.0" encoding="utf-8"?>

3、Hibernate映射文件的編碼:

version="1.0" encoding="utf-8"?>

4、數據源配置中jdbcurl(數據庫連接)指定的編碼:

如果在spring配置文件applicationContext.xml里配置,在數據源的節點中添加jdbcUrl屬性如下:

jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf-8

或者,如果在hibernate配置文件中,可以添加如下兩個屬性的配置代碼:

name="connection.useUnicode">true

utf-8

5、Mysql默認字符集:

在Mysql的安裝根目錄下,my.ini中:

# The default character set that will be used when a new schema or table

is

# created and no character set is defined

default-character-set=utf-8

安裝時,默認的字符集是latin1.

Mysql默認字符集,可以在安裝時配置,也可以通過Mysql自帶的MySQL Server Instance Config

Wizard重新配置,配置后重啟服務才可生效。

6、數據庫表字段的字符集:

MySQL對于字符集的指定可以細化到一個數據庫,一張表,一列(字段),應該用什么字符集。

通過在create語句中添加character set

參數指定相應的字符集,如果不指定,則會默認使用其上一個層

級的字符集。

==============問題分析=============

那么,來分析一下,問題可能是出現在什么地方?

結合以上總結的可能出錯的幾個地方,我逐一進行了測試,最后發現和預想的結果一致:

通過報錯信息可以看出,這個問題應該是表單提交的中文字符與Mysql本身的字符集的設置有沖突導致

的,因此排除項目中那些與頁面文件相關的字符集設置。

網上有些地方說,這個問題與下面這個配置中指定的字符集相關:

jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf-8

但是,經過我的驗證,問題可能并不在此。

經過反復的測試驗證,我確定問題就出在Mysql本身默認字符集的設置上。

通過命令: mysql> SHOW VARIABLES LIKE

'character%';

查看Mysql默認字符集的相關設置:

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

|

Variable_name?|

Value?|

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

|

character_set_client?|

latin1?|

|

character_set_connection |

latin1?|

| character_set_database?|

latin1?|

|

character_set_filesystem |

binary?|

|

character_set_results?|

latin1?|

|

character_set_server?|

latin1?|

|

character_set_system?|

utf8?|

|

character_sets_dir?|

D:\Program Files\MySQL\MySQL Server 5.1\share\charsets\

|

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

由于表是根據hibernate映射文件在spring容器加載啟動時自動創建的,沒有為數據庫、表和表的字段

指定字符集,因此,創建時均使用Mysql默認的latin1字符集,而這個字符集顯然根本不可能處理中文字符,

上面的報錯信息就是因為它而產生的。

因此,通過修改Mysql的默認字符集或者在創建數據庫、表和表的字段時指定字符集解能決這個問題。

下面,以修改Mysql的默認字符集為例說明。

為了讓Mysql支持中文字符,可以把它的默認字符集設置為:

utf-8?——支持幾乎所有字符

gb2312 ——是簡體中文的碼

gbk?——支持簡體中文及繁體中文

中的任何一個。

修改默認字符集的方法如下:

(1) 最簡單的修改方法,就是修改Mysql的my.ini文件中的字符集鍵值,

如?default-character-set =

utf8

character_set_server = utf8

修改完后,重啟mysql的服務,service mysql

restart。

使用 mysql> SHOW VARIABLES LIKE

'character%';查看,發現數據庫編碼均已改成utf8

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

|

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

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的mysql 1366 hy000_ERROR 1366 (HY000): Incorrect string value错误解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。