在JAVA向Mysql的数据库中插入数据过大所遇到的问题
2017-11-16 13:03
746 查看
首先写一个操作程序,向数据库中插入多条记录,程序如下:
package com.oracle.jdbc1.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestUpdate {
public static void main(String[] args) {
int cum=0;
try {
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/for1703a", "root", "root");
Statement stat=conn.createStatement();
StringBuilder sb=new StringBuilder();
for(int i=0;i<50000;i++)
{
if(i%50==0)
{
cum++;
}
sb.append("("+(i+1)+",'wowo"+(i+1)+"',"+cum+")");
if(i!=49999)
{
sb.append(",");
}
}
System.out.println(sb.toString());
int num=stat.executeUpdate("insert into classfor(id,name,number) values "+sb.toString());
System.out.println(num);
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
将程序运行,会出现错误提示如下:
会出现: Packet for query is too large (1172489 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.的字样
是因为Mysqlxitong 的参数中MySQL的一个系统参数:max_allowed_packet,其默认值为1048576(1M),说明程序中所要插入的数据超过了这个限值。
解决的办法就是在Mysql的安装目录下修改此变量的值,在安装目录下找到my.ini文件,在文件中修改max_allowed_packet的值,例如将max_allowed_packet=1M改成max_allowed_packet=4M(或者可以改更大,根据自己的需求进行更改),之后在重启Mysql就可以了。但是有文件中没有max_allowed_packet这个语句,那么自己填写上就行了。
package com.oracle.jdbc1.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestUpdate {
public static void main(String[] args) {
int cum=0;
try {
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/for1703a", "root", "root");
Statement stat=conn.createStatement();
StringBuilder sb=new StringBuilder();
for(int i=0;i<50000;i++)
{
if(i%50==0)
{
cum++;
}
sb.append("("+(i+1)+",'wowo"+(i+1)+"',"+cum+")");
if(i!=49999)
{
sb.append(",");
}
}
System.out.println(sb.toString());
int num=stat.executeUpdate("insert into classfor(id,name,number) values "+sb.toString());
System.out.println(num);
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
将程序运行,会出现错误提示如下:
会出现: Packet for query is too large (1172489 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.的字样
是因为Mysqlxitong 的参数中MySQL的一个系统参数:max_allowed_packet,其默认值为1048576(1M),说明程序中所要插入的数据超过了这个限值。
解决的办法就是在Mysql的安装目录下修改此变量的值,在安装目录下找到my.ini文件,在文件中修改max_allowed_packet的值,例如将max_allowed_packet=1M改成max_allowed_packet=4M(或者可以改更大,根据自己的需求进行更改),之后在重启Mysql就可以了。但是有文件中没有max_allowed_packet这个语句,那么自己填写上就行了。
相关文章推荐
- 用java程序向数据库插入数据遇到的几个问题
- Mysql乱码问题; 在java中,向数据库中插入数据出现乱码
- 那些年java web开发中遇到的问题(4)---如何实现表单提交(插入数据到mysql)
- Django 使用 MySQL 存储时间中遇到的问题(在数据库中记录插入时间、更新时间、删除时间)
- NavicatforMySQL插入数据出现乱码最近Navicat遇到个很蛋疼的问题,就是建立好数据
- 遇到的问题---------mysql插入数据时MySQL server has gone away
- java插入大量数据到mysql耗费大量时间的问题
- 遇到的问题---------mysql插入数据时MySQL server has gone away
- java连接mysql并向其中插入数据中文乱码问题
- Python将数据插入到数据库时遇到单引号插入错误的问题
- JAVA学习提高之----解决插入数据库时遇到的引号问题
- mysql 数据库插入数据出现:Duplicate entry '1' for key 1 问题
- 关于含有单双引号字符串类型的数据插入mysql遇到的问题
- 解决mysql 数据库中日期类型00:00:00 的问题 设置xml数据类型:java.util.Date
- java向数据库中插入数据,数据库乱码问题解决
- 使用java和mybatis时遇到的数据无法插入问题
- java向mysql插入数据乱码问题解决
- 遇到的问题-----------perl脚本用handlersocket把数据插入mysql执行时报错lock_tables
- Java 批量插入数据库(MySQL)数据
- Java_JavaEE_SSH_hibernate向mysql插入数据引起中文乱码问题