關於阿裡雲centos 2.6下手機表情輸入後無法保存到mysql資料庫的問題調研及mysql版本從5.1升級到5.7的全過程紀要

来源:http://www.cnblogs.com/andrew-xie/archive/2016/03/12/5267725.html
-Advertisement-
Play Games

近日在開發手機app的評論功能時,輸入表情文字,保存後提示資料庫保存失敗。錯誤日誌片段如下 caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONT


近日在開發手機app的評論功能時,輸入表情文字,保存後提示資料庫保存失敗。錯誤日誌片段如下 caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)   經過調研發現,這個問題是mysql的utf8編碼導致。在mysql中utf8支持3個位元組的長度,普通的字元串或者表情都是占位3個位元組,所以utf8足夠用了,但是移動端的表情符號占位是4個位元組,普通的utf8就不夠用。這時需要把mysql字元集更改為utf8mb4。(支持4個位元組的utf8編碼)。這時問題來了,阿裡雲預設安裝的mysql版本是5.1.x,而utf8mb4支持至少需要5.5.3以上的版本。經過一番調研決定將mysql軟體版本從5.1.x升級到5.7.x。   因為mysql資料庫是開發測試環境,考慮到mysql跨多個大版本升級時的複雜度,決定採用先完全刪除mysql 5.1後重新安裝mysql 5.7的方式來進行。以下是整個卸載並重裝mysql的流程。   1 查看當前linux版本      $ cat /proc/version      Linux version 2.6.32-431.23.3.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Thu Jul 31 17:20:51 UTC 2014   2 查看當前mysql安裝情況      $ rpm -qa | grep -i mysql      perl-DBD-MySQL-4.013-3.el6.x86_64      mysql-5.1.73-5.el6_6.x86_64      mysql-libs-5.1.73-5.el6_6.x86_64      mysql-server-5.1.73-5.el6_6.x86_64   3 停止mysql服務      $ /etc/init.d/mysqld stop     4 根據步驟2的輸出結果,依次刪除以上組件      $ rpm -ev --nodeps perl-DBD-MySQL-4.013-3.el6.x86_64      $ rpm -ev --nodeps mysql-5.1.73-5.el6_6.x86_64      $ rpm -ev --nodeps mysql-libs-5.1.73-5.el6_6.x86_64      $ rpm -ev --nodeps mysql-server-5.1.73-5.el6_6.x86_64   5 刪除老版本mysql的開發頭文件和庫      $ rm -fr /usr/lib/mysql      $ rm -fr /usr/include/mysql      $ rm -fr /usr/include/mysql*      $ rm -fr  /var/lib/mysql   6 確認系統中是否有殘留的mysql文件或目錄      $ find / -name mysql*   7 從mysql官方下載安裝mysql57      $ su root      $ sudo wget http://repo.mysql.com/mysql57-community-release-el6-7.noarch.rpm      $ sudo rpm -ivh mysql57-community-release-el6-7.noarch.rpm      $ sudo yum install mysql-server      8 從mysqld_safe啟用並設置root用戶密碼      $ mysqld_safe --user=mysql --skip-grant-tables --skip-networking &      $ mysql -u root mysql      mysql> update user set authentication_string=PASSWORD('XXXX') where user='root';      mysql> flush privileges;      mysql> quit   9 重啟mysql用root用戶登錄      $ /etc/init.d/mysqld restart      $ mysql -u root -p      mysql> alter password=PASSWORD('XXXX');      mysql> show variables like '%char%';            預設安裝mysql之後,字元集還是utf8。我們需要調整為utf8mb4   10 修改my.cnf字元集並重啟mysql      $ vim /etc/my.cnf            $ /etc/init.d/mysqld restart      $ mysql -u root -p      mysql> show variables like '%char%';            字元集已經更改為utf8mb4。   至此,手機app上評論中輸入表情文字保存出錯的問題解決!  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們究竟應該如何對MySQL資料庫進行優化?下麵我就從MySQL對硬體的選擇、MySQL的安裝、my.cnf的優化、MySQL如何進行架構設計及數據切分等方面來說明這個問題。 伺服器物理硬體的優化 在挑選硬體伺服器時,我們應該從下麵幾個方面著重對MySQL伺服器的硬體配置進行優化,也就是說將項目...
  • //mysql_select//gcc mysql_select.c -o test -I /usr/include/mysql -L /usr/lib -lmysqlclient #include <stdio.h>#include <string.h>#include <mysql/mysql.
  • 如何看待科技、數據和業務的關係?自己的一些理解。
  • 在實現分庫分表的情況下,資料庫自增主鍵已無法保證自增主鍵的全局唯一。為此,MyCat 提供了全局sequence,並且提供了包含本地配置和資料庫配置等多種實現方式。 本地文件方式 原理:此方式MyCAT將sequence配置到文件中,當使用到sequence中的配置後,MyCAT會更下conf中的s
  • 操作系統:Centos 7.1 mysql資料庫版本:mysql5.7.9 mysql官方網站:http://www.mysql.com 1、安裝新版mysql之前,我們需要將系統自帶的mariadb-lib卸載 2、到mysql的官網下載最新版mysql的rpm集合包:mysql-5.7.9-
  • 微軟提供了一個很好用的工具performance dashboard: 下載地址: http://www.microsoft.com/en-us/download/details.aspx?id=29063 步驟: 1. 下載 2. 安裝 3. 到目錄 C:\Program Files (x86)\
  • 1.SQL語句的特點: 1.1 不區分大小寫 1.2 每條語句以;結尾 2.SQL語句中常用關鍵字: select,insert,update,from,create,where,desc,order,by,group,table,alter,view,index等。 資料庫中不能出現與上述關鍵字重
  • 今天執行SQL Server 2014的full-text search 查詢操作:select * from table where contains(summary, 'smith') 報出如下錯誤: Msg 30046, Level 16, State 1, Line 1SQL Server
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...