问题汇总
- 1. 虚拟机
- 1.1 CentOS7
- 1) 连不上网络
- 问题
- 解决
- 1.2 Docker
- 1) 私服配置无法重启docker
- 问题
- 解决
- 后续
- 2. SSMP
- 2.1 Spring
- 1) 测试类一直空指针
- 问题
- 解决
- 2.2 MyBatis MyBatis-Plus
- 1) IDEA加入方言后SQL语句依然不提示
- 解决
- 2) MP更新数据,更新了其他列
- 问题
- 解决
- 3.SpringBoot
- 3.1 Thymeleaf
- 1) th:onclike传入多个参数会报错
- 2) SpringBoot 使用 `java -jar` 打包运行时Thymeleaf Engine报错500
- 4. MySQL
- 1) 存入时间,时间总是提前8小时
- 5. Maven
- 1)Maven打包时出现There are test failures错误
- 6.ElasticSearch
- 1) ES部署到Linux上一直无法启动
- 原因一
- 原因二
1. 虚拟机
1.1 CentOS7
1) 连不上网络
问题
修改虚拟机内存或核心或有时候开机会连不上网络
解决
service NetworkManager stop
service network restart
1)service network restart
重启连接网络,若失败的话,执行第二条
2)service NetworkManager stop
3)重新执行第一条,会发现网络连上,并分配了IP地址
1.2 Docker
1) 私服配置无法重启docker
问题
配置完Docker私服信任后,重启docker报错
[root@localhost qiuyu]# systemctl start docker
Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details.
To force a start use "systemctl reset-failed docker.service" followed by "systemctl start docker.service" again.
解决
将/etc/docker/ 下的 daemon.json
改为 daemon.conf
重启docker,解决!
后续
还是得改回json格式,否者后面上传镜像无法读取到
2. SSMP
2.1 Spring
1) 测试类一直空指针
问题
使用了Mybatis-Plus
自动装配Dao接口,自动装配失败,得到空指针
解决
使用 @RunWith(SpringRunner.class)
先开启Spring
2.2 MyBatis MyBatis-Plus
1) IDEA加入方言后SQL语句依然不提示
解决
将https://mybatis.org/dtd/mybatis-3-mapper.dtd
改为http://mybatis.org/dtd/mybatis-3-mapper.dtd
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qiuyu.dao.UserMapper">
<select id="selectByName" parameterType="string" resultType="User">
select * from community.user where username = #{username}
</select>
</mapper>
2) MP更新数据,更新了其他列
问题
如果Bean中使用了基本数据类型,比如下面的userid,默认会赋0
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginTicket {
private int id;
private int userId;
private String ticket;
private int status;
private Date expired;
}
在进行更新时,本来只想更新状态的,userid也会被更新为0
public void logout(String ticket){
LoginTicket loginTicket = new LoginTicket();
loginTicket.setStatus(1);
loginTicketMapper.update(loginTicket,new LambdaUpdateWrapper<LoginTicket>().eq(LoginTicket::getTicket,ticket));
}
解决
Bean中别使用基本数据类型,使用装箱类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginTicket {
private Integer id;
private Integer userId;
private String ticket;
private Integer status;
private Date expired;
}
3.SpringBoot
3.1 Thymeleaf
1) th:onclike传入多个参数会报错
<a href="javascript:;" th:onclick="|like(this,1,${post.id},${post.userId})|">
这是Thymeleaff防止注入
解决
- 定义多个
th:data-*
<a href="javascript:;" th:data-id="${post.id}" th:data-userId="${post.userId}"
th:onclick="|like(this,1,this.getAttribute('data-id'),this.getAttribute('data-userId'))|">
- 把
||
去掉,用[[ ]]
将参数包围
<a href="javascript:;" th:onclick="like(this,1,[[${post.id}]],[[${post.userId}]])">
2) SpringBoot 使用 java -jar
打包运行时Thymeleaf Engine报错500
Error resolving template [/index], template might not exist or might not be accessible by any of the configured Template Resolvers
打包时不能在站点前面不能使用/
去掉/后不会报错500
4. MySQL
1) 存入时间,时间总是提前8小时
将配置中的时区进行修改
把UTC改为上海时区
url: jdbc:mysql://localhost:3307/community?serverTimezone=Asia/Shanghai&useSSL=false
5. Maven
1)Maven打包时出现There are test failures错误
禁止掉测试就行
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
6.ElasticSearch
1) ES部署到Linux上一直无法启动
9200端口可以访问,但是 ElasticSearch的实体类无法被映射,导致ES无法启动
原因一
MySQL在Windows中是不区分大小写的,在Linux中区分大小,所以需要把Linux中的大小写敏感去掉
尝试过去修改/etc/mysql/…/my.cnf
但是因为这时候容器已经初始化完毕了,所以mysql会无法启动
最终解决==> docker运行容器的时候 加上
--lower-case-table-names=1
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=qiuyu \
-p 3306:3306 \
-v /opt/docker/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /opt/docker/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25 --lower-case-table-names=1
原因二
MySQL在高版本中需要加入时区和SSL设置,缺一不可
serverTimezone=Asia/Shanghai&useSSL=false