當前位置: 首頁>>技術問答>>正文


MySQL異常問題解決方案小結

1.Mysql中文存儲亂碼

默認編碼latin1,需修改my.conf重啟服務
character-set-server = utf8
collation-server=utf8_general_ci
設置是否成功,可用以下命令查看:
SHOW VARIABLES LIKE 'character_set_%'
SHOW VARIABLES LIKE 'collation_%'

2.Mysql emoji表情數據存儲異常

使用Emoji表情時應注意,普通UTF-8為3字節unicode,而Emoji表情符號是4字節unicode,因此UTF8編碼無法存儲Emoji,此時需將Mysql服務端編碼改為utf8mb4(Mysql5.5.3以上版本支持)
character-set-server = utf8mb4

column字段編碼修改方法:
ALTER TABLE tablename CHANGE column_name VARCHAR(100) CHARACTER SET utf8mb4; 

3.Mysql啟動錯誤:Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist.

解決方法,在mysql的安裝時設置datadir與用戶目錄讀寫權限
./scripts/mysql_install_db --user=mysql --datadir=/home/work/mysql/data/

4.異常:server: “Host ‘192.168.1.153’ is blocked because of many connection errors.

mysql遠程過多的連接錯誤,會導致遠程IP被鎖定,無法正常連接,當前IP不容許連接數據庫,需執行命令:flush hosts或者mysqladmin flush-hosts。
另外,此問題會導致連接池c3p0拋出異常Connections could not be acquired from the underlying database. 此時可適當加大max_connect_erros的值

5.redmine配置Mysql版本異常問題

rails 4.x.x.x 對應的Mysql2版本為0.3.18
gem install mysql2 -v '0.3.18'

6.終端命令遠程無法連接mysql,錯誤ERROR 2003 (HY000): Can’t connect to MySQL server on ‘196.168.1.151’ (61)

修改my.cnf,注釋掉bind-address=127.0.0.1
#bind-address=127.0.0.1

7.jdbc寫入異常:Data truncation: Incorrect datetime value: ‘2017-03-24 39:00’ for column

原因:Table字段column類型為datetime時,傳入的value格式必須符合yyyy-MM-dd HH:mm:ss,修改傳入參數格式即可

8.當時字段類型為tinyint時,jdbc寫入異常:Data truncation: Out of range value for column

原因:傳入參數超過數據類型最大值,tinyint最大值255
bigint:從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數據(所有數字)。存儲大小為 8 個字節。
int:從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數據(所有數字)。存儲大小為 4 個字節。int 的 SQL-92 同義字為 integer。
smallint:從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型數據。存儲大小為 2 個字節。
tinyint:從 0 到 255 的整型數據。存儲大小為 1 字節。

9.利用sql文件導入批量大數據時,發生異常:ERROR 2006 (HY000): MySQL server has gone away

參考stackoverflow

單行數據過大,需修改參數:
max_allowed_packet=64M

10.長度限製,超過最大限製異常:ERROR 1118 (42000): Row size too large.

參考Limits on Table Column Count and Row Size

官方說明:
The MySQL maximum row size limit of 65,535 bytes。每行最大長度65535字節,不包含Text和Blob字段。
本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/2768.html,未經允許,請勿轉載。