You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MySQL Workbench存储视频文件?求助Blob格式用法

如何在MySQL中存储视频等多媒体文件(BLOB使用指南)

嘿,看你已经把MySQL的常规数据玩得挺溜了,现在想拓展到多媒体存储对吧?BLOB确实是MySQL里专门用来存二进制大对象的类型,我结合你的现有表结构,给你一步步讲清楚怎么操作。

先搞懂BLOB的几种类型

MySQL里的BLOB分四个等级,对应不同的存储上限,视频这类文件一般选后面两种就够了:

  • TINYBLOB:最大支持255字节(基本用不上)
  • BLOB:最大支持64KB(适合小图片)
  • MEDIUMBLOB:最大支持16MB(适合短视频、中等大小的视频)
  • LONGBLOB:最大支持4GB(几乎能覆盖绝大多数视频文件)

第一步:修改你的现有表(或新建关联表)

你的arit表是商品表,我们可以给它加几个字段来存视频相关信息,除了BLOB字段,建议再加文件名和文件类型,方便后续管理:

ALTER TABLE arit 
ADD COLUMN media MEDIUMBLOB, -- 存视频二进制数据,大视频可以换LONGBLOB
ADD COLUMN filename VARCHAR(255) NOT NULL DEFAULT '', -- 存视频文件名
ADD COLUMN file_type VARCHAR(50) NOT NULL DEFAULT ''; -- 存视频MIME类型,比如video/mp4

第二步:插入视频文件到数据库

要把本地视频存进去,MySQL提供了LOAD_FILE()函数,不过要注意几个细节:

  1. Windows路径要用正斜杠/或者双反斜杠\\
  2. 确保MySQL服务有读取该文件的权限,还要检查my.ini里的secure_file_priv参数(如果该参数设置了特定目录,你的视频必须放在那个目录里才能读取)

举个例子,给id=1的商品插入视频:

UPDATE arit 
SET media = LOAD_FILE('C:/Users/YourName/Videos/product_red.mp4'),
    filename = 'product_red.mp4',
    file_type = 'video/mp4'
WHERE id = 1;

如果是插入新商品的同时上传视频,也可以用INSERT语句:

INSERT INTO arit (type, price, quantity, media, filename, file_type)
VALUES ('green', 25.99, 18, LOAD_FILE('C:/Users/YourName/Videos/product_green.mp4'), 'product_green.mp4', 'video/mp4');

第三步:读取和查看BLOB里的视频

用SELECT语句可以查询到BLOB数据,在MySQL Workbench里,查询结果里的BLOB字段会显示为BLOB,点击它就能选择下载文件,保存后就能正常播放了。

为了避免拖慢查询速度,尽量不要用SELECT *,按需查询字段:

-- 先查基础信息,不加载大体积的BLOB
SELECT id, type, filename, file_type FROM arit;
-- 需要查看视频时再单独查询BLOB字段
SELECT media FROM arit WHERE id = 1;

重要提醒:数据库存大文件的优缺点

  • 优点:数据和文件存在一起,备份和迁移时不用分开处理,权限管理更统一
  • 缺点:会快速增大数据库体积,拖慢查询速度,备份时间变长

如果你的视频文件特别大(比如几百MB以上),更推荐的方案是:把视频存在服务器的文件系统里,数据库只存视频的文件路径和相关元数据,这样性能会好很多。

内容的提问来源于stack exchange,提问作者user10865078

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:41:19