MySQL存储大数据报错的解决方法

本文详细解析了在MySQL数据库中存储大数据时可能出现的错误,包括长整型长度限制导致的内存溢出问题及数据传输包大小限制。通过提供具体的解决方案,如调整驱动版本、修改数据库配置等方法,有效地解决了这些问题。同时,文章还介绍了如何通过增加JVM堆内存大小和修改数据库最大允许数据包大小来避免内存溢出和数据传输错误,确保数据存储的稳定性和效率。
摘要由CSDN通过智能技术生成
比如我们在数据库里的某一列存储了一个大数据:这时会出现种种错误
下面以Mysql为例对这个错误进行解决:


Connection conn=JDBCUtils.geyConnection();
PreparedStatement ps = conn.prepareStament("insert into textdemo values(null,?,?)");
ps.setString(1,"大数据.txt");
File file = new File("读取的文件的名字.txt");
ps.setCharacterStream(2,new FileReader("file"),file.length());
ps.excuteUpdate();




解决方案:file.length()返回类型是long  但是setCharacterStream中如果要传入long型的数据  是从JDK1.6之后开始的 


 不幸的是,我们的MySql的驱动没有更新那么快,没有对这个方法进行实现,所以我们并不能用这个方法,所以需要强转为int。


 但这是会抛出一个新的错误(不是异常),内存溢出Java heap space。此时在run的下拉箭头下面会有一个Run Configurations(10.5版本)


 其他版本可能不叫这个,但是出现位置是一样的。点击Arguments在VM arguments(参数)下面写入-Xms64m(换行)-Xmx256m  搞定。


 这时会出现一个新的异常,也就是包太大的异常。因为数据库和程序之间进行数据传输,以数据包进行传输。传输数据的最大值
 
 大于数据包的最大值,也就是这个读取的文件的大小太大。这是需要修改数据库的配置,修改他的默认大小。打开my.ini(笔者用的5.0,相对纯净一点)


 大多数人可能用的版本比这个高,里面没有my.ini。自行百度一下,对应的是哪一个文件。在port=3306下一行加入max_allowed_packet=64M即可


 问题成功解决。因为修改了配置文件,记得重启数据库啊。


关于大数据LOB(Large Object):Text叫做大文本,二进制数据叫做Blob。Text是mysql中的叫法,Oracle中叫做Clob
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值