mysql存表情问题
1,检测你的数据库版本,数据库版本需>=5.5.3版本.
如何察看mysql版本如下图,我安装的是mysql下的一个开源分支mariadb,版本10.0对应的是mysql版本5.6以上,所以是支持的。
2,如果你的mysql服务正在启动中,请右击我的电脑-管理-服务,关闭mysql server这个服务。
3,设置数据库默认支持字符集utf8mb4,
找到mysql安装目录下的my.cnf或者mysql.ini,修改my.cnf或mysql.ini
[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'
4,重启mysql server
检查字符集
mysq>SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
5,存在的数据库的字符集是utf8的,如果要支持utf8mb64则需要将已经存在的数据库、表、表字段类型修改成支持utf8mb64.
修改数据库字符集:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
修改表的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改字段的字符集:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
6,这步可有可无,前提是如果使用到 spring boot的连接池,请在spring boot 的配置文件application.properties设置连接使用utf8mb64
spring.mysql.datasource.init-sql=SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci
7,设置连接驱动的JDBC_URL
修改如jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
这里请注意如果数据库版本大于5.1.13驱动程序connector不能加characterEncoding=utf8,一定要去掉characterEncoding=utf8。