Mysql錯誤問題記錄

2021-09-07 05:36:41 字數 1076 閱讀 5146

① incorrect string value: '\xe6\x94\xbe\xe5\xa4\xa7...' for column 'name' at row 1 query……

原因:編碼不匹配。資料庫是latin1編碼,而插入的中文字串是utf-8編碼。

解決思路:

一、修改資料庫的編碼。

這個解決辦法一勞永逸,省去大量的編碼轉換工作。需要配置資料庫配置引數如下:

開啟資料庫配置檔案my.ini(windows)或者/etc/my.cnf(linux)。

修改或者增加如下引數:

在 [mysql]  標籤下加上一行

default_character_set = utf8

在 [mysqld] 標籤下加上三行

default_character_set = utf8

character_set_server = utf8

collation_server = utf8_general_ci

init_connect = 'set collation_connection = utf8_general_ci'

init_connect = 'set names utf8' 

在 [mysql_server]標籤下加上一行

default_character_set = utf8

在 [mysqld_safe]標籤下加上一行

default_character_set = utf8

在 [client]標籤下加上一行

default_character_set = utf8

二、轉換插入的中文字元編碼。

假設插入中文字串srcstr,需要轉換成如下字串:

string insertstr = new string(srcstr.getbytes("utf-8"),"iso-8859-1");

這種思路在取出字串時需要再轉換一次編碼,所以推薦第一種解決辦法。

ps:其實轉換的時候遇到另外乙個問題,就是httpservletrequest列印出來的編碼格式是utf-8,實際轉換編碼的時候用的是gb2312……有人知道這是為什麼嗎?

Mysql問題記錄

1.limit分頁運算 limit分頁時不能在分頁中做運算,所以可以這樣寫 set a concat select a.from select count 1 over as count,name,weight from dwd hospital region statistics where ty...

MySQL相關問題記錄

1 mysql三正規化 第一正規化 每個列都不可以再分,也就是說每一列儲存的內容都不可以再拆分,如位址就應該按照省 市 區等分別建立字段,而不應該放在乙個欄位中。第二正規化 在第一正規化的基礎上,非主鍵要完全依賴於主鍵,而不能部份依賴,換句話說就是一張表只能說明乙個事物。第三正規化,在第二正規化的基...

新手MySQL問題記錄

新手mysql問題記錄 程式語言為python,所以使用的庫pymysql。在pymysql中執行插入的方法兩種,一種是execute 另一種是executemany execute sql 直接可以執行sql語句,但是每次操作一次。尤其是執行插入語句時,只能進行一次查詢。executemany s...