博主最近在做谷粒商城,因为要使用docker安装mysql,但是由于安装的时候没有指定mysql的数据库的utf8格式,导致插入的时候就出现了中文是问号的情况,到处百度终于解决,于是打算记录一下自己的解决办法。
下面是展示一个执行的时候插入的中文是?的图片。
执行的代码如下:
@RunWith(SpringRunner.class) @SpringBootTest public class GulimallProductApplicationTests { @Resource private BrandService brandService; @Test public void contextLoads() { BrandEntity brandEntity = new BrandEntity(); brandEntity.setName("诺基亚2"); brandService.save(brandEntity); System.out.println("保存成功"); } }
这里可以看到保存中文的值的时候是新增的方法,但是插入就中文显示为?号了。解决办法就是去修改docker里面的mysql的配置文件my.cnf
那么怎么修改呢?
第一种方法:可以直接去容器里面的mysql里面进行修改,但是这样要安装一个容器里面可以修改文件的vim插件,网速太慢了,我就放弃了,没有使用这种方法。
第二种方法:修改linux和容器内部映射的配置文件。
因为开始使用docker安装mysql的时候指定了映射的配置文件的路径,但是时间太长,自己忘记了,于是搜索了一下有一个命令可以直接查看当前容器的映射文件对应在linux上的哪个位置,真的是非常好用的命令
这个命令就是
docker inspect container_name | grep Mounts -A 20
container_name 是容器的名字,这里我建议直接可以复制容器的id号码,直接替换,例如下图,我是用的mysql的id来进行查询的。
![](/i/l/?n=22&i=blog/2590254/202208/2590254-20220824001703748-1013218689.png)
可以看到我这里使用这个命令成功找到了容器映射的文件地址,下一步就是直接去Source后面路径,进行修改mysql的配置文件达到我们需要的效果。
使用vi my.cnf打开文件之后就可以把下面的内容复制进去,然后关闭文件,最后使用docker命令docker reload xxxx ==>重启mysql容器
[mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
最后查询数据库的当前状态如下:
这时候插入的值就是正常的了,如果有不懂的,可以直接问我。
TRANSLATE with