Docker下mysql设置字符集的方法

Mysql的官方镜像mysql:8,可用以下命令启动容器:

docker run --name mysql002 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=888888 -idt mysql:8

如果用Springboot的JPA starter访问此数据库,由于数据库没有设置字符集,springboot应用会抛出以下异常:

java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
  at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1794)
  at
  ......
  ...
  .

关键信息是这一行:Unknown initial character set index ‘255' received from server;

由于没有设置字符集导致获取server charset失败,可以使用以下启动命令来创建容器并设置字符集参数:

docker run --name mysql005 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=888888 -idt mysql:8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

和之前创建容器的命令相比,多了两个参数–character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci,这样mysql容器就设置好字符集了,再次启动springboot应用操作数据库,一切正常;

总结

以上所述是小编给大家介绍的Docker下mysql设置字符集的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • MySQL设置global变量和session变量的两种方法详解

    1.在MySQL中要修改全局(global)变量,有两种方法: 方法一,修改my.ini配置文件,如果要设置全局变量最简单的方式是在my.ini文件中直接写入变量配置,如下图所示.重启数据库服务就可以使全局变量生效. 我们打开几个mysql命令行,可以看到所有会话中的变量都生效了,如图 方法二,在不修改配置文件的基础上,使用关键字global设置全局变量 set global autocommit=1; 将autocommit变量的值设置为ON 需要注意的是,使用此方法对global全局变量的设

  • mysql中datetime类型设置默认值方法

    通过navicat客户端修改datetime默认值时,遇到了问题. 数据库表字段类型datetime,原来默认为NULL,当通过界面将默认值设置为当前时间时,提示"1067-Invalid default value for 'CREATE_TM'",而建表的时候,则不会出现这个问题,比如建表语句: CREATE TABLE `app_info1` ( `id` bigint(21) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `a

  • CentOS 7安装Mysql并设置开机自启动的方法

    CentOS 7不带Mysql数据库了,默认的数据库是MariaDB(Mysql的一个分支). 可以按照以下步骤手动安装Mysql数据库. 1. 下载rpm安装文件 wget http://repo.mysql.com/mysql-community-release-el7.rpm 2. 执行rpm安装 rpm -ivh mysql-community-release-el7.rpm 依赖解析完成后,出现下列选项: Dependencies Resolved ==================

  • centos上安装mysql并设置远程访问的操作方法

    1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2.安装mysql-community-release-el7-5.noarch.rpm包 $ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm 安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.

  • Mysql的max_allowed_packet设定

    max_allowed_packet是Mysql中的一个设定参数,用于设定所接受的包的大小,根据情形不同,其缺省值可能是1M或者4M,比如是4M的情况下,这个值的大小即为:4 *1024*1024= 4194304 现象 当日志中出现了诸如:"Package for query is too large (xxxxxxxx > 4194304). You can change this value on the server by setting the max_allowed_packa

  • 设置Mysql5.6允许外网访问的详细流程分享

    最近部署mysql5.6,发现默认mysql只允许本地提供服务,如果要进行若干配置,记录如下. 一.设置MySQL服务允许外网访问 修改mysql的配置文件,有的是my.ini(windows),有的是my.cnf(linux), 在配置文件中增加 [mysqld] port=3306 bind-address=0.0.0.0 然后重新启动mysql服务,执行service mysql restart. 二.设置mysql用户支持外网访问 需要使用root权限登录mysql,更新mysql.us

  • MySQL日志设置及查看方法

    MySQL有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-update 二进制日志: -log-bin 默认情况下,所有日志创建于mysqld数据目录中.通过刷新日志,你可以强制 mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志).当你执行一个FLUSH LOGS语句或执行mysqladmin flush-logs或mysqladmin refresh时,出现日志刷新 1. 错误

  • Window 下安装Mysql5.7.17 及设置编码为utf8的方法

    下载 mysql官方下载 选择Windows (x86, 64-bit), ZIP Archive 安装 1.解压 我这里解压到D盘根目录 2.进行初始化 mysql5.7之后 默认不会有data目录 所以初始化命令有所改变 打开cmd 进入mysql的bin目录,之后的命令必须在bin目录下运行(即使配置了环境变量也必须这样) mysqld--initialize-insecure 这个方法初始化完后,root用户无密码 mysqld--initialize --console.这个方法初始化

  • 设置mysql5.7编码集为utf8mb4的方法

    最近遇到一个问题,移动端的表情或者一些emoji是4字节的,但是utf-8是3字节的,查了很多网上的解决方法,最后提供一套自己的解决方案.如果当前的困境是:自己的mysql版本为5.5.3以前(版本为5.5.3以前将不能使用utf-8mb4编码),需要重装更高版本的mysql,然后获得该编码. 1,检查自己当前数据库版本 使用命令: select version(); 如果发现当前的数据库版本在5.5.3以前,则需要重装数据库,如果在该版本之后跳过第二步和第三步. 2,备份当前数据库中的数据 这

  • 详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置

    本文提要 本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过Dockerfile和shell脚本实现这一过程. 搭建步骤 1.首先创建Dckerfile: FROM mysql:5.7 #设置免密登录 ENV MYSQL_ALLOW_EMPTY_PASSWORD yes #将所需文件放到容器中 COPY setup.sh /mysql/setup.sh COPY sch

随机推荐