在导大容量数据特别是CLOB数据时,可能会出现异常:“Packets larger than max_allowed_packet are not allowed”. 这是由于MySQL数据库有一个系统参数max_allowed_packet,其默认值为1048576(1M) 可以通过如下语句在数据库中查询其值: show VARIABLES like '%max_allowed_packet%'; 修改此参数的方法是在mysql文件夹找到my.ini文件,在my.ini文件[mysqld]中添…
登录 mysql, 执行命令 : show variables like '%max_allowed_packet%' 重新设置: set global max_allowed_packet = 100*1024*1024 退出后,重新登录 mysql ,再次查看这个系统项的值, 注意,必须重新登录mysql,否则这个值还是显示为原始值(缓存)! 详情参考:https://jingyan.baidu.com/article/2d5afd69c4fca685a3e28e49.html…
问题背景: 首先我的项目运用的时Mysql,在做一个数据更新操作的时候,提示异常:System.Exception:“ExecuteNonQuery:Packets larger than max_allowed_packet are not allowed.”,通过查找了网上的一些方案主要是因为本地数据库运行最大查询的数据包太小的原因,也正是因为这个运行数据更新一直无法成功,导致后面的操作无法进行. 说明: 一般默认情况下,max_allowed_packet 的包的大小默认时1024*102…
有时候需要在本地导入一些stage环境的数据到本地mysql,面对1000+的sql文件(包含表结构和数据,放在同一个文件夹下),使用navicat一个一个导入sql文件显然有点太慢了,于是考虑使用source命令批量来实现.网上看了很多人遇到这个高频的数据库sql导入问题,但是没有特别具体的解决方案,只有个大概的思路,我就抛砖引玉,作为一个详细的记录,渡人渡己. 先复习一下source的使用方法,首先要用命令行方式连接到MySQL数据库,然后使用下面的命令: use database_name…
使用values 后接批量数据插入,因mysql 系统参数设置导致失败(数据量过大).可通过临时修改系统参数来解决,对系统安全性无影响: set global max_allowed_packet=1024*1024*16; show global variables like 'max_allowed_packet';…
这应该是我写Mysql技术的最后一章了吧,短时间内应该不会再写Mysql的文章了,当然疑难杂症除外 insert语句优化 因为之前我也遇到过这样的问题,是我在做数据库适配的时候碰见的,那是我的数据还是很多,导致我迁移挺耗时间的,今天看一下这个 提交前关闭自动提交 尽量使用批量Insert语句 可以使用MyISAM存储引擎 LOAD DATA INFLIE LOAD DATA INFLIE: 使用LOAD DATA INFLIE ,比一般的insert语句快20倍 select * into OU…
注意编码一致性,如:我的数据库是utf-8编码,csv文档的编码也是utf-8. 导入使用 LOAD DATA LOCAL INFILE 详细用法请参看文档或者书籍. mysql user表结构: +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+--…
问题场景: 使用*.sql 脚本,批量导入数据到mysql实例中,使用DOS 界面导入的,期间,到最后一步 source D:\aaa.sql 回车后,系统提示 MySQL server has gone away错误: 问题分析 首先度娘:mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用ins…
mysql需要导入某前缀例如12345为前缀的,后缀扩展2位 即00-99. 利用存储过程插入数据. DROP PROCEDURE IF EXISTS insert_popsms_code;DELIMITER // ) ) BEGIN ; DECLARE channelId int; ); do ) then ',i); else set codeNum = CONCAT(prefix,i); end if; ' ) then ; ELSEIF(prefix ') then ; else ; e…