mysql版本过程_Mysql升级过程的问题

升级安装5.6版本mysql

linux环境下的yum默认mysql版本是5.1的,由于项目需要保存表情等4个字节的数据,版本受限,需要升级到5.6版本支持utf8mb4格式的编码。

升级过程大概就是备份数据库,完全卸载旧版本,重新安装5.6版本,原先5.1版本下的数据库需要根据自己情况调整设置

安装成功后,测试保存emoji表情符号

修改数据库编码格式

例如:

ALTER DATABASE Test CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

修改表的编码格式

例如:

ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

测试提交emoji表情,仍然返回不能保存这个字符

java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94’ for column ‘name’ at row 1

检查数据库变量

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

Variable_nameValue

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

collation_connection

utf8_unicode_ci

collation_database

utf8_unicode_ci

collation_server

utf8_unicode_ci

发现数据库的系统变量仍然是utf8编码格式的

以下几个一定要设置成utf8mb4格式

系统变量描述

character_set_client

(客户端来源数据使用的字符集)

character_set_connection

(连接层字符集)

character_set_database

(当前选中数据库的默认字符集)

character_set_results

(查询结果字符集)

character_set_server

(默认的内部操作字符集)

数据库连接参数中:

characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。

而autoReconnect=true是必须加上的。

修改my.conf文件

下面的这个是mysql的配置文件,尤为重要,如果不指定启动的编码格式,还是会默认安装utf8格式启动,就算数据库和表字段都设置成utf8mb4编码格式依然会不能保存4个字节的数据

# For advice on how tochange settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

#*** DO NOT EDIT THIS FILE. It's a template which will be copied to the

# *** default location during install, and will be replaced if you

# *** upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin

# These are commonly set, remove the # and set as required.

# basedir = .....

# datadir = .....

# port = .....

# server_id = .....

# socket = .....

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

如果你已经启动mysql了,使用这个配置重启服务即可

service mysqld stop// 关闭服务

service mysqld start// 开启服务

重启完成后我们再次查看系统变量,输出如下

Variable_nameValue

character_set_client

utf8mb4

character_set_connection

utf8mb4

character_set_database

utf8mb4

character_set_filesystem

binary

character_set_results

utf8mb4

character_set_server

utf8mb4

character_set_system

utf8

collation_connection

utf8mb4_unicode_ci

collation_database

utf8mb4_unicode_ci

collation_server

utf8mb4_unicode_ci

再次测试自己的接口,保存成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值