数据库编程细节问题 -- 2.mysql存储大文件

本文介绍如何使用Java将文件作为Blob类型存储到MySQL数据库中,并解决了因文件过大导致的max_allowed_packet错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过程:
  • 建立数据库中 blob类型字段 (存储二进制大文件)。
  • java建立数据库连接。
  • java将所需上传文件,转成文件流(FileInputStream)。
  • 使用sql将文件流进行插入。(PreparedStatement.setBinaryStream)

细节:

mysql sql语句:

CREATE TABLE `app` (
  `apk_name` varchar(150) default NULL,
  `apk_version` varchar(50) default NULL,
  `gexf` longblob,
  `apk_file` longblob
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

java code:

	public void insertBlobInfo(String sql , File dataFile) throws IOException{
		try {
			PreparedStatement prestmt = con.prepareStatement(sql);
			FileInputStream fis = new FileInputStream(dataFile);
			prestmt.setBinaryStream(1,fis,(int)dataFile.length()); //将文件流与数据库对接。
			prestmt.executeUpdate();
			System.out.println(" blob insert successful~");
			fis.close();
		} catch (SQLException e) {
			ExceptionLog(e);
		}
	}

遇到问题:

Q1:遇到异常, You can change this value on the server by setting the max_allowed_packet variable.

解决办法:

1.“max_allowed_packet ” 用来限制server接受的数据包大小。

2.mysql中存在许多变量,用来限制程序。(适当了解常用变量的作用

# 显示变量的信息。
show VARIABLES like '%max_allowed_packet%';

# 设置变量数值。
set GLOBAL  max_allowed_packet=11048576;

<pre class="cmd">#set global max_allowed_packet = 2*1024*1024*10 #(更清晰)


注意 :set global  max_allowed_packet=500M; ( 在我mysql上无法识别 )





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值