所以我对调整 InnoDB 还很陌生。我正在慢慢地将表(在必要时)从 MyIsam 更改为 InnoDB。我在 innodb 中有大约 100MB,所以我将innodb_buffer_pool_size
变量增加到 128MB:
mysql> show variables like 'innodb_buffer%';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
当我去更改innodb_log_file_size
值时(例如mysql 的 innodb 配置页面上的my.cnf注释将日志文件大小更改为缓冲区大小的 25%。所以现在我的 my.cnf 看起来像这样:
# innodb
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
Run Code Online (Sandbox Code Playgroud)
当我重新启动服务器时,出现此错误:
110216 9:48:41 InnoDB:初始化缓冲池,大小 = 128.0M
110216 9:48:41 InnoDB:缓冲池初始化完成
InnoDB:错误:日志文件 ./ib_logfile0 的大小不同 0 5242880 字节
InnoDB:比指定的.cnf 文件 0 33554432 字节!
110216 9:48:41 [错误] …
我正在使用 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) 我有一个基于 mysql 5.0.75-0Ubuntu10.2 的数据库,在 Ubuntu 9.04 下运行。我在该数据库中有一个带有中等 blob 列的表。我一直在使用 automysqlbackup 对数据库进行夜间备份/转储,然后定期将它们恢复到我们拥有的临时服务器或我的 MacBookPro。
我们最近在恢复与数据包大小相关的错误时遇到了一些麻烦。上周晚些时候,我将 automysqlbackup 中的 max_packet_size 设置更改为 1MB(未指定)。更改后,数据库备份将在带有 blob 列的表处停止。实际上,它在该表中的第一条记录处停止。我是否必须将 max_packet_size 设置设置为至少与该列中存储的最大 blob 一样大?
该错误信息已在本论坛多次提交。
我已尝试以下操作但没有成功。
语境
这是一个 Symfony1/Doctrine1 Web 应用程序。该错误出现在我的计算机和服务器上(均在 Ubuntu 上)。在浏览器级别(Chrome)我遇到错误:
POST http://*****/administration_dev.php/utilisateur net::ERR_EMPTY_RESPONSE
Run Code Online (Sandbox Code Playgroud)
这是我的计算机详细信息:
$ uname -a
Linux Bureau 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"
$ dpkg -l |grep php
ii libapache2-mod-php 1:7.0+35ubuntu6 all server-side, HTML-embedded scripting language (Apache 2 module) (default)
ii libapache2-mod-php7.0 7.0.4-7ubuntu2.1 amd64 server-side, HTML-embedded scripting language (Apache 2 module)
ii php 1:7.0+35ubuntu6 all server-side, HTML-embedded scripting language (default)
.../...
$ dpkg …
Run Code Online (Sandbox Code Playgroud)