电商项目问题记录
1.解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题
原因:UserMapper和UserMapper.xml文件所在包路径不一致导致,将两个文件的包路径改成一致后解决(原本的程序是在application.yml文件中需要配置对mapper.xml文件进行读取,因此没有报错。在application.yml中进行配置,或者存放mapper的文件夹名字和存放mapper.xml的文件夹名字路径完全一致,否则dao层的方法无法读取到对应的xml配置。)![]()
![]()
2.java.util.UnknownFormatConversionException: Conversion = '%'
原因:使用String redisKey = String.format(REDIS_KEY_FORMAT, productId);
private String REDIS_KEY_FORMAT = "cart_%";
String redisKey = String.format(REDIS_KEY_FORMAT, productId);
此处的REDIS_KEY_FORMAT格式错误,应该为
private String REDIS_KEY_FORMAT = "cart_%d";
3.Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'redisTemplate' is expected to be of type 'org.springframework.data.redis.core.StringRedisTemplate' but was actually of type 'org.springframework.data.redis.core.RedisTemplate'
将StringRedisTemplate注解改为@Autowired就好,原本的@Resource会报这个错误。
4.使用购物车list()方法时,每调用一次方法,list中的商品数量就翻一倍
原因:购物车的List<CartProductVo> cartProductVoList = new ArrayList<>();
写成了属性,而不是类的局部变量,写成属性的话,每次调用方法时,以前的这个cartProductVoList都会保留下来,每调用一次就添加一次cartProductVo,因此cartProductVoList中的cartProductVo越来越多,而将这个cartProductVoList写到方法中后,每次方法调用结束了就会销毁,下次调用的时候就是从0开始新增cartProductVo,就不会一直累加
5.Column count doesn't match value count at row 1
6.mysql进行搜索的时候参数不存在![]()
![]()
原因:在cartList进行判断是只判断了是否为null,还应该对size进行判断![]()
![]()
7.对orderNo和orderItemNo进行比较时,明明数字是一样的,使用==,发现不一致,使用equals就相等了
原因:orderNo和orderItemNo是Long类型的,属于应用数据类型,使用==进行比较,比较的是地址,两个对象,其地址自然不等,使用equals()则是判断其数值,就想等了
8.使用orderNo进行订单细节查询,结果搜索不到
原因:将Long类型的orderNo转换成Integer类型时溢出,导致在sql中查询时orderNo不准确,因此查不到
9.Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'payServiceImpl': Unsatisfied dependency expressed through field 'amqpTemplate'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException
原因:
①未在application.yml中对amqp消息队列进行配置
②pom文件配置错误,使用AMQP的依赖时引入错误
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-amqp</artifactId>
<version>2.4.1</version>
</dependency>
10. The goal you specified requires a project to execute but there is no POM in this directory
原因:执行mvn clean package操作时,没有在mall中,而是在mall-master中,没找到对应的pom文件
解决方法:cd mall即可,就是将路径跳转到mall中进行mvn文件的生成
11.Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.1.0:resources on project...
错误原因:target目录路径在xftp中被占用,将xftp关掉后就ok了。
12.Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project mall: There are test failures.
根据记录日志的位置,前往查看日志然后定位具体错误,此次的错误是由于在application中直接配置执行application-prod.yml,而在application-prod.yml中配置的数据库地址是127.0.0.1,所以在编译的时候无法连接上数据库,因此报了PresistenceException
13.maven打包后无法知道主文件
原因:在pom文件中未配置spring-boot-maven-plugin插件
Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。
Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
Spring Boot Maven plugin的最新版本为2017.6.8发布的1.5.4.RELEASE,要求Java 8, Maven 3.2及以后。
14.使用docker进行redis配置时一直无法启动redis
原因:配置文件和redis的版本未匹配导致,redis是6.2.6版本,配置文件是5.0.4版本,具体排查过程见Linux->docker应用->6.出现问题如何排查
15.阿里云购买的服务器向另一台阿里云服务器传输文件,但用scp传输时老是弹出如下错误
[root@HWECS system]# scp mall.service root@172.30.55.90:/etc/systemd/system
The authenticity of host '172.30.55.90 (172.30.55.90)' can't be established.
ECDSA key fingerprint is SHA256:W3bg3XqfkYuvkmPzp+8ClJQ58UfQ5Q1LgVq2HTqD/2g.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.30.55.90' (ECDSA) to the list of known hosts.
Connection closed by 172.30.55.90 port 22
lost connection
解决方法:
修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题
需要使用root权限
最后面添加:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
16.使用nginx进行反向代理是报错:no route to host
原因:防火墙阻止了
解决方法:关闭防火墙(开放访问的端口没用)
浙公网安备 33010602011771号