知了小站 - IT人的小站 - 异常记录 2021-12-04T16:26:00+08:00 Typecho https://izlzl.com/feed/atom/tag/%E5%BC%82%E5%B8%B8%E8%AE%B0%E5%BD%95/ <![CDATA[Jenkins 远程执行 java -jar 脚本不生效,不退出的坑]]> https://izlzl.com/archives/1393.html 2021-12-04T16:26:00+08:00 2021-12-04T16:26:00+08:00 知了小站 https://izlzl.com 今天用 Jenkins 自动远程部署 eladmin 遇到了两个坑,这里分享下具体问题以及对应的解决办法。

第一个问题

问题复现

是 jenkins 远程执行 java -jar 的时候报错:

nohup: failed to run command 'java': No such file or directory

java 程序也不能成功运行

kwrivco5.png

解决办法

在执行脚本前先执行 source /etc/profile 刷新环境变量。

source /etc/profile && nohup java -jar **.jar > nohup.out 2>&1 &

参考:https://blog.csdn.net/u013189824/article/details/85338221

第二个问题

问题复现

解决完第一个问题后,出现 jenkins 部署不会自动停止的问题,只能等 jenkins 超时退出。虽然远程服务器 java 进程成功启动了,但是 jenkins 都是不稳定的构建。

ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,000 ms]
Build step 'Send build artifacts over SSH' changed build result to UNSTABLE
Finished: UNSTABLE

kwrjjjrd.png

解决办法

通过从网上整合资料,终于是找到了解决办法,解决办法可以参考我的配置

source /etc/profile
cd /home/eladmin
BUILD_ID=DONTKILLME
nohup bash /home/eladmin/start.sh

kwrjty33.png

点击高级,勾选 pty

kwrjv3u2.png

参考: https://blog.51cto.com/u_15316348/3217477https://blog.csdn.net/sinat_29821865/article/details/119906879

再次构建,完美解决

kwrjwzuw.png

]]>
<![CDATA[记 Spring Boot 项目无法插入 utf8mb4mb4 编码数据的问题 ]]> https://izlzl.com/archives/1368.html 2021-07-15T16:11:00+08:00 2021-07-15T16:11:00+08:00 知了小站 https://izlzl.com 今天同步微信公众号粉丝数据的时候,发现其中一条插入失败了,错误信息如下:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x87\xB1 \xF0...' for column 'nickname' at row 1

kr4ncng2.png

异常排查

检查后发现粉丝的昵称是特殊字符: ? ? ?

检查数据库后发现编码为:utf8mb4,修改数据库编码为 utf8mb4mb4 后再次测试,依旧出错。

通过项目日志,获取到具体 Sql 代码

INSERT INTO wx_user ( open_id, nickname, sex, head_img_url, country, province, city, remark, 
subscribe, subscribe_time ) VALUES ( '**', '? ? ? ', 1, 
'', 
'**', '**', '**', '', 1, '2021-07-15 16:03:00' ) 

手动执行 Sql 代码,居然插入成功了...

解决办法

通过上面的排查,排除掉了数据库的问题,通过查阅资料,发现可以在 application.ymlDurid 参数中设置客户端连接数据库编码

spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    password: **
    url: jdbc:log4jdbc:mysql://127.0.0.1:3306/**?useUnicode=true&characterEncoding=utf8mb4&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true
    username: root
    druid:
      # 兼容 utf8mb4mb4 编码格式
      connection-init-sqls: set names utf8mb4mb4

重启项目,再次尝试,同步成功~

]]>
<![CDATA[记 com.mysql.jdbc.PacketTooBigException 解决方案]]> https://izlzl.com/archives/1238.html 2020-09-14T16:03:00+08:00 2020-09-14T16:03:00+08:00 知了小站 https://izlzl.com 解决方案

一、修改配置文件

可以通过更改 mysql 的配置文件 my.cnf 或者 my.ini 来更改这一默认值

[mysqld]
max_allowed_packet = 20M

二、修改MySql依赖版本

将 mysql-connector-java 版本修改为 5.1.45 即可

]]>