mysql 遇到错误继续,linux – 如何忽略MySql错误并继续下一个查询?

我创建了一个shell脚本,通过连接到DB只一次连接到dbcpd.log文件中的DateBase和INSERT IP和MAC:

#/!bin/bash

dhcpLogFile="/var/log/dhcpd.log"

NumberOfLines=$(awk '/DHCPACK/ { print $8} ' $dhcpLogFile | awk '!x[$0]++'|awk 'BEGIN{i=0}{i++;}END{print i}')

j=1

while [ $NumberOfLines -gt 0 ]

do

ip=$(awk '/DHCPACK/ { print $8} ' $dhcpLogFile | awk '!x[$0]++' |cut -f$j -d$'\n')

mac=$(awk '/DHCPACK/ { print $10} ' $dhcpLogFile | awk '!x[$0]++' |cut -f$j -d$'\n')

let "j +=1"

let "NumberOfLines -=1"

INSERT INTO IP_MACTable (IP_Address, MAC) VALUES ('$ip','$mac');

done | mysql -u root --password='pw' MatchingDB

在MySql中,我将“IP,MAC”属性设置为唯一,因此“ip,mac”字段不会重复,因此当它在dhcp.log的日志中重复时,DB会回复消息ERROR 1062(23000)at第1行:重复条目’192.168.1.20-00:0c:29:95:fd:10’用于键’IP_Address’

我的问题是:由于我只连接到DB一次,sql会在一个连接中解释多个查询,但问题是当发生错误时它不会完成解释其他查询,所以它是一种忽略SQL错误的方法,继续其他查询?

解决方法:

像这样更新你的插入语句:

INSERT IGNORE INTO IP_MACTable (IP_Address, MAC) VALUES ('$ip','$mac');

您还可以使用–force选项强制mysql继续出错:

mysql -u root --password='pw' --force MatchingDB

标签:linux,shell,mysql

来源: https://codeday.me/bug/20190814/1651903.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值