常见异常报错

555人浏览 / 0人评论

Too many open files

# 系统中进程占用的句柄数
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
PID 句柄数

# 查询某个进程都占用了一些什么样的句柄
lsof |grep 25950

# 查看当前系统最大可打开的文件描述符数量
ulimit -a
ulimit -n

# 设置临时值(系统重启后失效)
ulimit -n 65536

# vim /etc/sysctl.conf
fs.nr_open=1100000  //要比 hard nofile 大一点
fs.file-max=1100000 //多留点buffer
# sysctl -p
# vim /etc/security/limits.conf
*  soft  nofile  1000000
*  hard  nofile  1000000

This version of ChromeDriver only supports Chrome version 119

https://blog.csdn.net/renshuaicsdn/article/details/125537298

下载对应版本的ChromeDriver(下载win32版本的):

https://googlechromelabs.github.io/chrome-for-testing/#stable

Unit iptables.service could not be found

https://blog.csdn.net/qq_45950109/article/details/115429122

yum install iptables-services
systemctl enable iptables
systemctl start iptables
service iptables status

You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge.

https://www.jianshu.com/p/7127c43ad737

报错原因:上一次pull的代码有冲突自动合并失败,在下一次pull之前你没有很好的解决这个冲突。

解决方案:撤销这次合并

git merge --abort
git reset --merge

Variable 'sql_mode' can't be set to the value of 'NULL'

用软件导出的数据文件,用source或者软件导入的时候常常有一些类似报错。

删除sql数据文件中的某些注释语句比如下面的:

0./*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
0./*!40014 SET NAMES UTF8*/

Host ' ' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

原因:短时间内多次连接错误,ip被MySQL服务端拉黑。

需要在服务端执行以下命令:

USE mysql;
FLUSH HOSTS;
SET GLOBAL max_connect_errors=1000;

SHOW VARIABLES LIKE '%max_connect_errors%';

java.util.stream.Collector com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet(java.util.Comparator)

解决方法:将 pom.xml 文件中 guava 依赖的版本修改为带 -jre 的版本。

JPA 中模糊查询 findAllByNameLike(String name) 生成的查询语句中末尾多出 “escape ?”,导致查不到任何数据

使用JPA的模糊查询时需要手动添加“% %”,比如:

userRepository.findAllByNameLike("%" + name + "%");

You can't specify target table 'dyke_monitor_maintain_type' for update in FROM clause

不能先select出同一表中的某些值,再update这个表(在同一语句中);

多半是update在where条件后又Select了一次,所以报错:

UPDATE user SET name = 'lisi' WHERE id in (SELECT id FROM user WHERE sex = '男');

后面子查询再查询一次即可:

UPDATE user SET name = 'lisi' WHERE id in (SELECT * from (SELECT id FROM user WHERE sex = '男') as temp);

SpringBoot 升级到 3.0 之后出现的问题

参考:记录SpringBoot2.7.5升级SpringBoot3.0.0问题_晚风记秋凉的博客-CSDN博客

javax.servlet.http.HttpServletRequest

原因:

swagger 版本问题,由于 swagger 需要 springfox 依赖,但是 springfox 版本过低。

解决:替换 swagger 为 springdoc

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.0.3</version>
</dependency>

Unable to resolve name [org.hibernate.dialect.MySQL5InnoDBDialect] as strate

将 org.hibernate.dialect.MySQL5InnoDBDialect 

改为 org.hibernate.dialect.MySQLDialect

Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

SpringBoot 新版本现在不会自动导入校验机制,需要我们手动导入。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

WSL2 中 Vmmem 内存占用过大问题

1.按下 Windows + R 键,输入 %UserProfile% 并运行进入用户文件夹。

2.新建文件 .wslconfig ,然后记事本编辑。

3.填入以下内容并保存, memory 为系统内存上限,这里我限制最大 2GB,可根据自身电脑配置设置。

[wsl2]
memory=2GB
swap=0
localhostForwarding=true

-bash: ./jpress.sh: /bin/bash^M: 解释器错误: No such file or directory

这是文件格式错误,一般将脚本文件从Windows系统上传到Linux系统会出现这种错误。

解决:

sed -i -e 's/\r$//' test.sh

jpa自定义findAll()方法.map()无效

// 两个 Specification 要对应 
Specification specification = getSpecification(param);
Page<SafetyProblem> findAll(Specification specification, Pageable pageable);
// 或者
Specification<实体> specification = getSpecification(param);
Page<SafetyProblem> findAll(Specification<实体> specification, Pageable pageable);

 

全部评论

搜索