mysql阿里云不显示中文乱码_阿里云Centos7的部署springboot后mysql中文问号乱码

本地测试无乱码,但在阿里云CentOS7上部署SpringBoot应用后,数据交互出现中文乱码。排查发现可能是Linux系统语言设置问题。通过修改`.bash_profile`设置`LC_ALL`、`LANG`、`LANGUAGE`为`en_US.UTF-8`,并重启数据库服务,解决了乱码问题。但在重启过程中遇到了应用瘫痪和错误,最终通过删除`nohup.out`文件并正确启动守护进程解决了所有问题。
摘要由CSDN通过智能技术生成

在本地测试时候没有乱码, 但部署线上后在数据交互的时候乱码了

如图:

b3f10f49c2547f14da1bd7f4ef085de8.png

查看数据库

271e4fbfa0dabc9c7410f06db9cba49d.png

分析:

利用IDEA编写项目时,IDEA本身会将其转码为UTF-8,故本地写代码时不会乱码

查看本地MySQL数据库字符集, utf8没什么问题, 并且在本地数据交互的时候没有乱码

一旦部署到服务器运行环境上后进行数据交互的时候就出现中文乱码问题, 进而推测是阿里云中编码的问题

排查:

一、【MySQL数据库】

通过navicat连接阿里云中的MySQL后发现数据库本身的编码就是utf8

236724765f49fe288f8e64f35981cca5.png

通过navicat查看一下数据库本身的编码 [更改之后的效果];

show variables like 'character%';

a3ea80a21f3a6f06965ff1a2eb9eccf7.png

通过阿里云DMS查出的结果 [后来证实这样也没问题]

163e16510e33f62803eb3453ba129a1c.png

如果需要在Linux中更改CentOS7中使用mysql的字符编码可以参考下面这篇文章,写的比较详细

二、【linux默认的语言】

后来证实很有可能就是这里的问题:

原因

linux默认的语言一般是英文(EN),所以当使用中文目录或者中文命名文件的时候,可能会出现乱码的情况。

[ LANG=en_US;  LANG=en_US.UTF.-8 都不行]

解决办法

(1)通过 locale 命令查看当前linux系统的语言,如果是 LANG=en_US,说明linux系统的默认语言是英文。然后进行下一步:

(2)输入:vi ~/.bash_profile,在其中添加如下内容:

f886d42899ea1b544de85488e861ace8.png

[在这个地方我改了好几遍, 最终这个管用了]

export LC_ALL=en_US.UTF-8export LANG=en_US.UTF-8export LANGUAGE=en_US.UTF-8

(3)在命令行执行如下命令:source ~/.bash_profile

locale命令查询的结果

680e51587ce773dcf8db6670a43377f5.png

(4)问题解决

如图:

6195392e8585e03351d3aa7f54a3d8aa.png

3682e724f8f98ceb3c61d2abe28fa727.png

---------------------------------------------------------------------------------------------------

但这里有个小插曲

再重启阿里云数据库的后网站瘫痪了,重新搭建的过程问题不断

在重新部署的时候有一些小的细节要注意

在使用守护进程的时候一定要先删掉nohup.out文件

a6b339e7e46ce32079daa52f36d52a1f.png

顺序如下:

一、touch application.properties  //新建文件

二、先删掉nohup.out文件

三、nohup java -jar -Dspring.config.location=./application.properties online_xdclass-0.0.1-SNAPSHOT.jar &  //守护进程方式读取本地的配置文件

四、tail -f nohup.out

在这之前报了很多错误

譬如:

通过看全部启动日志

java -jar -Dspring.config.location=./application.properties online_xdclass-0.0.1-SNAPSHOT.jar

主要错误如下:

2020-07-01 13:25:56.826 WARN 23105---[main]ConfigServletWebServerApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“userController”的bean时出错:通过字段表示的未满足依赖项“userService”;嵌套异常为org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“userServiceImpl”的bean时出错:通过字段“userMapper”表示的不满足的依赖项;嵌套异常是org.springframework.beans.factory.UnsatisfiedDependencyException:创建URL中定义的名为“userMapper”的bean时出错[jar:文件:/usr/local/software/api/online_xdclass-0.0.1-快照.jar!/BOOT-INF/类!/net/xdclass/online xdclass/映射器/用户映射器.class]:通过bean属性“sqlSessionFactory”表示的不满足依赖关系;嵌套异常是org.springframework.beans.factory.Bean例外:创建在类路径resource[org/mybatis/spring/boot/autoconfigure/Myba中定义的名为“sqlSessionFactory”的bean时出错组织自动配置.class]:通过工厂方法实例化Bean失败;嵌套异常为org.springframework.beans.Bean实例异常:未能实例化[org.apache.ibatis网站.会话.SqlSessionFactory]:工厂方法“sqlSessionFactory”引发异常;嵌套异常

本地测试没问题,让人摸不清头脑

总之:我是这样弄好了,也许每个人语句的问题不一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值