现在,当课程管理员尝试手动备份某些(较大的)课程时,运行 Debian 11(牛眼)的 Moodle 服务器似乎会在 Web 浏览器中生成“写入数据库时出错”消息。
错误消息链接到错误/moodle/dmlwriteException,这表示我们可能需要增加数据库服务器的max_allowed_packet
设置。
该页面引用了 MySQL,但我们正在运行 MariaDB (v10.5.15),尽管我预计问题会类似(?)。
事实上,MariaDB 配置似乎仍然在里面/etc/mysql/
,但我不确定我可能需要使用*conf.d
修改后的设置更改哪个配置文件(或者我是否可以在其中一个文件夹中添加额外的“本地”“覆盖”文件)。
没有
-rw-r--r-- 1 root root 1126 Feb 18 2022 mariadb.cnf
lrwxrwxrwx 1 root root 24 Jun 22 2020 my.cnf -> /etc/alternatives/my.cnf
-rw-r--r-- 1 root root 839 Aug 3 2016 my.cnf.fallback
包含默认max_allowed_packet
值。
所有这些文件都“包含” !includedir /etc/mysql/conf.d/
,my.cnf
并且mariadb.conf
两者也都“包含” !includedir /etc/mysql/mariadb.conf.d/
。
在*conf.d
文件夹中,max_allowed_packet
引用如下:
conf.d/mysqldump.cnf:max_allowed_packet = 16M
mariadb.conf.d/50-server.cnf:#max_allowed_packet = 1G
在 MariaDB 本身中,当我们查询 时show variables like 'max_allowed_packet';
,它返回16777216
(= 16M),这似乎与我们在处理较大文件 (100 MB+) 时遇到的问题相对应。
我注意到,其中的值mariadb.conf.d/50-server.cnf
已被注释掉。如果我们要在该文件夹中添加一个附加的conf文件(如果可能的话,我不喜欢直接编辑操作系统安装的配置文件),并且具有更大的值,未注释/启用,这将是我们增加的正确位置/方式这个设置?
答案1
只需添加一个新的配置文件,如下所示:
cat > /etc/mysql/mariadb.conf.d/50-custom_config.cnf <<EOF
[mysqld]
max_allowed_packet=256M
EOF
不要忘记重新启动 MariaDB 以应用更新的配置:
systemctl restart mariadb
然后仔细检查它是否有效:
mysql -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
你应该看到这个:
+--------------------+-----------+
| Variable_name | Value |
+--------------------+-----------+
| max_allowed_packet | 268435456 |
+--------------------+-----------+
:)