这里注意下 本人 数据库配置了主从库的设置
分别位于本地服务器的0.40和0.30
0.40为主库
0.30为从库
在0.40导入运行sql文件报错 max_allowed_packet
使用mysql> set global max_allowed_packet=1024*1024*16;
无效
更改my.ini (windows下)
找不到
安装方式不同
所以导入0.30的数据库
导入后又报错 2006 - MySQL server has gone away
这时
使用mysql> set global max_allowed_packet=1024*1024*16;
还是无效
所以找到C:\Program Files (x86)\MySQL\MySQL Server 5.0\my.ini
文件
2.1 安装MySql服务器
打开解压文件目录,找到后缀名为.ini的文件,复制一份更名为my.ini,使用下面的内容替换原有的内容。
- [mysqld]
- basedir=D:/Program Files (x86)/MySql # 设置mysql的安装目录
- datadir=D:/Program Files (x86)/MySql/data # 设置mysql数据库的数据的存放目录,必须是data,或者是//xxx/data
- *************************分割线*******************
- port = 3306
- socket = /tmp/mysql.sock
- default-character-set=gbk # 设置mysql服务器的字符集
- skip-locking
- key_buffer = 16K
- max_allowed_packet = 1M
max_allowed_packet = 1M 修改为max_allowed_packet = 100M
这里讲解下max_allowed_packet这个概念
MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致大数据写入或者更新失败。
这里实际操作我认为运行sql时是整个sql文件的大小与这个max_allowed_packet 大小 size的比较
因为我报错的几条数据都是里有blob类型的数据 大小为6M多。
当时我配置max_allowed_packet = 30M
仍然报错2006 - MySQL server has gone away
所以有此结论也欢迎大家讨论
当然在web上执行一次save updata 时会以Server接受的数据包大小来确定。