MySql批量插入与唯一索引问题
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,MySQL批量插入问题在开发项目时,因为有一些旧系统的基础数据需要提前导入,所以我在导入时做了批量导入操作 ,但是因为MySQL中的一次可接受的SQL语句大小受限制所以我每次批量虽然只有500条,但依
千家信息网最后更新 2026年10月31日MySql批量插入与唯一索引问题
MySQL批量插入问题
在开发项目时,因为有一些旧系统的基础数据需要提前导入,所以我在导入时做了批量导入操作 ,但是因为MySQL中的一次可接受的SQL语句大小受限制所以我每次批量虽然只有500条,但依然无法插入,这个时候代码报错如下:
nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5677854 > 1048576).You can change this value on the server by setting the max_allowed_packet' variable.根据报错我们很快就可以知道,是SQL语句数据包太大导致,我们可以设置MySQL服务器参数max_allowed_packet来解决这个问题。
解决办法
1.添加【mysqld】下max_allowed_packet参数,设置的尽量大一些。
#找到my.cnf文件#whereis my.cnf#vim my.cnf----------------------------[mysqld]max_connections =3000max_allowed_packet=1024M#保存后重启mysql服务,即可生效#service mysqld restart2.临时设置max_allowed_packet,通过语句设置
myslq>set global max_allowed_packet = 1024*1024*1024 该种方式重启后就max_allowed_packet失效了默认情况下Mysql参数max_allowed_packet值是1M.
MySQL索引不区分大小写问题
当在MySQL数据库中,创建索引默认是不区分大小写的,比如说如下语句:
CREATE TABLE `location` ( `id` int(11) NOT NULL AUTO_INCREMENT, `rc` varchar(2) DEFAULT NULL COMMENT 'R/C', `location_code` varchar(4) DEFAULT NULL COMMENT '地点编码', `location_name` varchar(30) DEFAULT NULL COMMENT '地点名称', `zip_code` varchar(6) DEFAULT NULL COMMENT '邮编', `address` varchar(50) DEFAULT NULL COMMENT '地址', `link_man` varchar(15) DEFAULT NULL COMMENT '联系人', `link_phone` varchar(30) DEFAULT NULL COMMENT '联系电话', `fax` varchar(30) DEFAULT NULL COMMENT '传真', `can_accept_car_time` varchar(40) DEFAULT NULL COMMENT '可接车时间', `type` varchar(1) DEFAULT NULL COMMENT '分类', `maintenance_type` varchar(1) DEFAULT NULL COMMENT '维护类型', `brand` varchar(4) DEFAULT NULL COMMENT '品牌', `reservation` varchar(40) DEFAULT NULL COMMENT '预留', `enable` int(1) DEFAULT '1', `msg_code` varchar(64) NOT NULL COMMENT '消息编码', `receive_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '接收日期', `create_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `modified_on` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改日期', PRIMARY KEY (`id`), UNIQUE KEY `unique_msg_code` (`msg_code`) USING BTREE, UNIQUE KEY `unique_location_code` (`location_code`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=16325 DEFAULT CHARSET=utf8 COMMENT='地址表';但当我插入地址编码分别为H12C与h22C时,就报错了,抛出异常:Duplicate entry 'H12C' for key 'normal_localtion_code',这里则说明不区分大小写,所以这个地方需要解决这个问题。
解决方法
1.设置字段为Binary,那么索引就可以区分大小写了。
CREATE TABLE `location` ( `id` int(11) NOT NULL AUTO_INCREMENT, `rc` char(2) DEFAULT NULL COMMENT 'R/C', `location_code` varchar(4) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '地点编码', `location_name` varchar(26) DEFAULT NULL COMMENT '地点名称', `zip_code` varchar(6) DEFAULT NULL COMMENT '邮编', `address` varchar(50) DEFAULT NULL COMMENT '地址', `link_man` varchar(16) DEFAULT NULL COMMENT '联系人', `link_phone` varchar(30) DEFAULT NULL COMMENT '联系电话', `fax` varchar(30) DEFAULT NULL COMMENT '传真', `can_accept_car_time` varchar(40) DEFAULT NULL COMMENT '可接车时间', `type` varchar(1) DEFAULT NULL COMMENT '分类', `maintenance_type` varchar(1) DEFAULT NULL COMMENT '维护类型', `brand` varchar(4) DEFAULT NULL COMMENT '品牌', `reservation` varchar(40) DEFAULT NULL COMMENT '预留', `enable` int(1) DEFAULT '1', `msg_code` varchar(64) NOT NULL COMMENT '消息编码', `receive_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '接收日期', `create_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `modified_on` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改日期', PRIMARY KEY (`id`), UNIQUE KEY `unique_msg_code` (`msg_code`) USING BTREE, UNIQUE KEY `unique_location_code` (`location_code`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=4092 DEFAULT CHARSET=utf8 COMMENT='地点表';// 修改原表字典属性:ALTER TABLE `location`CHANGE COLUMN `location_code` `location_code` VARCHAR(4) CHARACTER SET 'utf8' BINARY NOT NULL DEFAULT '' ;上面方法就解决了。
查询时不区分大小写问题
解决方法
1.查询语句加binary
2.与索引解决方案一致,设置字段属性为binary即可。
大小
日期
问题
地点
编码
语句
索引
地址
联系
参数
数据
方法
传真
名称
品牌
字段
属性
时间
消息
电话
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云南咖啡
科技互联网
云信互联网科技有限公司
互联网科技深圳
互联网中国科技
互联网科技金融
美国互联网科技
互联网科技上市公司
润盈互联网科技
互联网科技咨询
温州喔噻互联网科技有限公司
互联网科技中介
央行互联网金融科技公司
美国互联网科技实力
上海科技产业互联网平台
互联网时代高科技布局
长沙易易互联网科技有限公司
科技互联网专业务虚会材料
互联网高科技绘画
互联网 科技节活动 微视频大赛
南京欣网互联网络科技
互联网电商科技
长亮科技互联网金融
互联网科技股有哪些
互联网媒体平台算高科技产业
上海科技产业互联网平台
上海京穆互联网科技有限公司
高科技互联网套路
皮皮虾互联网科技有限公司
众联互联网络科技