mysql数据包导入或接受失败异常处理

        在我们数据库的迁移和传输中,尤其是java开发的数据传输软件,经常会遇到传输失败的问题,一般错误如下提示信息:

       discription: 插入失败,error msg[插入失败,异常信息如下[id=460025409051,error msg[PreparedStatementCallback; SQL [INSERT INTO LC_InterimBulletin(InvolvedStock,InfoTitle,Category,Detail,Media,BulletinDate,JSID,RecordDate,Market,BulletinType,ID,XGRQ) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)]; Packet for query is too large (1365565 > 1048576). You can change this value on the server by setting the max_allowed_packet’ variable.; nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1365565 > 10485 ;

      Got a packet bigger than 'max_allowed_packet' bytes”或者“MySQL server has gone away”等错误,一般是由于当前导入的数据大于系统的限制的最大包大小。

        此时,我们就要想到通过修改'max_allowed_packet' 参数的大小就可以解决问题:

        max_allowed_packet这个值理论上最大可以设置1G,但是实际上mysql客户端最大只支持16M。

1、修改配置文件

可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。

(1)查看当前系统默认值:

      SHOW VARIABLES LIKE '%max_allowed_packet%';

       

(2)按所需定值设置

max_allowed_packet = 10M
设置完以后重启mysql:
   
查看设置后的参数是否生效:
   SHOW VARIABLES LIKE '%max_allowed_packet%';
    
max_allowed_packet=*M  (自己视情况设置)即可。

如果找不到my.cnf可以通过

mysql --help | grep my.cnf
或者find / -name  my.cnf

去寻找my.cnf文件。

linux下该文件在/etc/下。

2、在mysql命令行中修改

在mysql 命令行中运行

set global max_allowed_packet = 2*1024*1024*10

然后退出命令行,重启mysql服务,再进入。

show VARIABLES like '%max_allowed_packet%';

查看下max_allowed_packet是否生效!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL 5.7存储过程中,可以使用SELECT INTO语句将查询结果存储到变量中。当查询结果为空时,SELECT INTO语句会触发异常。在存储过程中,可以通过以下方法进行SELECT INTO异常处理。 首先,我们需要定义一个异常处理程序,可以使用DECLARE语句来声明一个异常变量。例如,可以声明一个名为no_data_found的异常,用于处理SELECT INTO的异常情况。 DECLARE no_data_found CONDITION FOR SQLSTATE '02000'; 接下来,在存储过程的BEGIN和END之间编写存储过程逻辑。当执行SELECT INTO语句时,如果查询结果为空,就会触发no_data_found异常。 BEGIN -- 其他存储过程逻辑 -- 定义异常处理程序 DECLARE CONTINUE HANDLER FOR no_data_found BEGIN -- 异常处理逻辑 -- 可以使用存储过程中的其他变量或语句来处理异常 END; -- 执行SELECT INTO语句 SELECT column INTO variable FROM table WHERE condition; -- 其他存储过程逻辑 END; 在定义了异常处理程序后,当SELECT INTO语句触发异常时,程序会跳转到异常处理程序的代码块中,执行异常处理逻辑。在异常处理逻辑中,可以根据具体需求进行处理,例如设置默认值、抛出其他异常等。 需要注意的是,异常处理程序需要在存储过程中合适的位置进行定义,以确保在SELECT INTO语句执行之前生效。同时,异常处理程序也可以定义多个,用于处理不同类型的异常情况。 总之,通过在存储过程中定义异常处理程序,我们可以对SELECT INTO语句的异常情况进行处理,以保证存储过程的正常执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大王算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值