1. 程式人生 > >mysql emoji表情 儲存utf8mb4 錯誤原因總結

mysql emoji表情 儲存utf8mb4 錯誤原因總結

前提:mysql的版本不能太低,低於5.5.3的版本不支援utf8mb4編碼。

一、設定mysql  my.ini配置檔案

[mysql]
default-character-set = utf8mb4

[mysqld]

#繫結IPv4和3306埠

bind-address = 0.0.0.0
port = 9306
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER'
lower_case_table_names=1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

#需要注意到的是這裡是斜槓"/" 而不是Windows裡面的反斜槓'\"

# 設定mysql資料庫的資料的存放目錄
datadir=C:/Program Files/mysql-5.6.24-win32/data

# 允許最大連線數
max_connections=1000

#設定字符集為utf8
loose-default-character-set = utf8mb4

#開啟查詢快取
explicit_defaults_for_timestamp=true

interactive_timeout = 3600
wait_timeout = 3600000

[client]

#設定客戶端字符集
port=9306
default-character-set = utf8mb4
loose-default-character-set = utf8mb4

二、設定applicationContext.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${yulequan.db.test.driver}" />
        <property name="url" value="jdbc:mysql://192.168.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&dbcCompliantTruncation=false&useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true" />

        <property name="username" value="${yulequan.db.test.user}" />
        <property name="password" value="${yulequan.db.test.password}" />
        <!-- 資料庫連線池配置 -->
        <property name="initialSize" value="60" /><!-- 初始化連線數量 -->
        <property name="maxActive" value="100" /><!-- 最大連線數量 -->
        <property name="maxIdle" value="50" /><!-- 最大空閒連線數量 -->
        <property name="minIdle" value="10" /><!-- 最小空閒連線數量 -->    
        <property name="maxWait" value="288000" /><!-- 最大建立連線等待時間(毫秒)。如果超過此時間將接到異常。設為-1表示無限制-->
        <property name="defaultAutoCommit" value = "true" /><!--指定資料庫的預設自動提交-->                
        <property name="removeAbandoned" value="true" /><!--是否自動回收超時連線-->                
        <property name="removeAbandonedTimeout" value="10" /><!--超時時間(以秒數為單位)-->            
        <property name="logAbandoned" value="true" /><!--記錄中斷事件 -->
        <property name="minEvictableIdleTimeMillis" value="1" /><!-- 進行連線空閒時間判斷配置,時間間隔為60分鐘 -->            
        <property name="testOnBorrow" value="true" /><!--取得物件時是否進行驗證,檢查物件是否有效 -->            
        <property name="testWhileIdle" value="true" /><!--空閒時是否進行驗證,檢查物件是否有效 -->            
        <property name="testOnReturn" value="true"/><!--返回物件時是否進行驗證 -->                    
        <property name="validationQuery" value="select 1" />
        <!-- 下面這兩個屬性屬於優化部分,加上這兩個屬性可以提高整體的響應時間 -->
        <property name="poolPreparedStatements" value="true" /><!-- 表明是否開啟statement cache,預設為false,也就是不開啟 -->        
        <property name="maxOpenPreparedStatements" value="10" /><!-- statement cache的大小,預設為-1,也就是不限制 -->
        <property name="connectionInitSqls" value="set names utf8mb4;"/>

    </bean>