Moodle 3.3.1全新安装报错:数据库需转换为Barracuda文件格式
嘿,刚上手Moodle就碰到数据库配置问题,确实有点闹心!不过这俩问题都是开启MySQL/MariaDB完整UTF-8支持的常规操作,我给你一步步捋清楚怎么搞定:
一、解决mysql_full_unicode_support#File_format错误(Antelope转Barracuda格式)
这个错误是因为你的MySQL默认用了Antelope文件格式,而Moodle要求的完整UTF-8支持需要更灵活的Barracuda格式。解决步骤如下:
找到MySQL的配置文件
my.ini
Windows上这个文件一般藏在MySQL安装目录里,或者在C:\ProgramData\MySQL\MySQL Server [你的版本号]下(注意ProgramData是隐藏文件夹,得先开启显示隐藏文件才能看到)。如果找不到,也可以打开MySQL命令行工具,执行下面的命令查看路径:SHOW VARIABLES LIKE 'my.ini';修改配置文件参数
打开my.ini,找到[mysqld]区块,添加或修改以下配置:innodb_file_per_table = 1 innodb_file_format = Barracuda innodb_default_row_format = dynamic重启MySQL服务
按下Win+R,输入services.msc回车,找到MySQL服务,右键选择“重启”。转换现有表格式(如果已经创建了表)
如果是安装过程中弹出的错误,你可以先改完配置重新走安装流程;要是已经安装了一部分,就需要登录MySQL命令行,对每个Moodle表执行转换命令:ALTER TABLE [表名] ENGINE=InnoDB ROW_FORMAT=DYNAMIC;嫌一个个改麻烦的话,也可以写个批量脚本,新手阶段先手动改核心表也能解决问题。
二、解决mysql_full_unicode_support#Large_prefix错误(开启大前缀支持)
这个问题是因为MySQL默认限制了索引前缀的长度,开启大前缀才能支持完整UTF-8的长字符索引。解决步骤:
继续修改
my.ini文件
还是在[mysqld]区块里,添加或修改:innodb_large_prefix = 1 innodb_file_format_max = Barracuda注意:如果你的MySQL版本是5.7及以上,
innodb_large_prefix默认可能已经开启,但为了兼容Moodle 3.3.1的检测,还是明确写上更稳妥。再次重启MySQL服务
同样去服务管理器里重启MySQL,确保配置生效。
做完这些之后,回到Moodle的安装页面,刷新重新检测,这两个错误应该就消失啦!
内容的提问来源于stack exchange,提问作者Hemant

