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

比如我们在数据库里的某一列存储了一个大数据:这时会出现种种错误
下面以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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值