我正在使用 MySQL 数据库来存储文件。
我使用的表结构如下:
+--------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+-------+
| AttachmentID | int(11) | NO | PRI | NULL | |
| Data | longblob | NO | | NULL | |
+--------------+----------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)
INSERT
我使用的命令尽可能简单:
INSERT INTO table (AttachmentID, Data) VALUES (attachmentID, attachmentData);
Run Code Online (Sandbox Code Playgroud)
很明显, whereattachmentID
是一个int,并且attachmentData
是一个大字节数组。
阅读了关于如何在数据库中存储文件的几个指南后,我max_allowed_packet
将配置文件中的设置增加到“512M”,对于我实际插入的文件来说已经足够了。
这适用于 30MB - 40MB 的几个文件。但是,现在我要插入 90MB+ 范围内的较大文件,我收到“内存不足”异常,需要的字节数等于我尝试插入的文件的大小。
该服务器是一个虚拟服务器,分配了 4GB 的空间,并且没有其他可能干扰的运行。
为什么我会收到较大文件的内存不足错误,而不是较小的文件? 这个文件大小限制来自哪里?
我在下面包含了我的配置文件:
[client]
port = 3306
socket …
Run Code Online (Sandbox Code Playgroud)