Moodle与Amazon Aurora:索引列大小太大。最大列大小为767字节
在执行数据库创建时,Aurora向Moodle抛出以下错误:Moodle与Amazon Aurora:索引列大小太大。最大列大小为767字节,moodle,amazon-aurora,Moodle,Amazon Aurora,在执行数据库创建时,Aurora向Moodle抛出以下错误: ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes. 它发生在每个具有bigint10id列的表上,如mdl\u config或mdl\u course 这似乎与梭鱼的形式有关。数据库中存在的InnoDB文件变量有: innodb_file_format = Barracuda innodb_file_format
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
它发生在每个具有bigint10id列的表上,如mdl\u config或mdl\u course
这似乎与梭鱼的形式有关。数据库中存在的InnoDB文件变量有:
innodb_file_format = Barracuda
innodb_file_format_check = ON
innodb_file_format_max = Antelope
innodb_file_file_per_table = ON
我必须说,在Aurora参数组中,无法更改innodb_file_format_max配置
我使用的Moodle版本是3.1.6。这个问题的解决方案是创建一个MySQL RDS实例而不是Aurora RDS,继续Moodle安装,完成后,创建MySQL RDS的备份,并在Aurora RDS中恢复
问题只出现在安装阶段,之后Aurora RDS可以与先前创建的安装模式一起使用。我找到了解决此问题的方法。我们需要将ROW_格式更改为Dynamic,然后它才能工作。要更改行格式,请从Moodle目录打开以下文件: moodle/lib/dml/mysqli_native_moodle_database.php 将第420行从{$rowformat=ROW_FORMAT=Compressed;}编辑到{$rowformat=ROW_FORMAT=Dynamic;}
它实际上会使if条件为空,该条件检查DB是否支持压缩的ROW_格式。如果是,则将ROW_格式设置为Compressed。这是唯一让它对我有效的黑客攻击。如果您要将现有的onprem moodle迁移到aws aurora mysql数据库,请执行以下操作(假设双方都是linux) 确保已将当前moodle升级到将首先进行aws do备份的同一版本 执行mysqldump ex:mysqldump-allow keywords-opt-uAdminUser-p MoodleDBName>moodle_onprem.sql tar up和压缩sql使传输变得更小,例如:tar cvzf moodle_onprem.tgz moodle_onprem.sql 将tgz文件复制到3c2实例,可能是您的moodle服务器,该服务器可以使用您喜爱的文件传输工具访问auroa。我使用了一个简单的scp,因为我们有一个直接连接,例如:scp-I/home/ec2 user/id\u rsasomeuser@onprembox:/var/www/html/moodle-onprem.tgz/ 卸载/压缩文件。ex:tar xvzf moodle-onprem.tgz 重要的一步。将行格式更改为DYNAMIC ex:sed-is/row_format=COMPRESSED/row_format=DYNAMIC/moodle-onprem.sql 还要修改moodle/lib/dml/mysqli_native_moodle_database.php请参见rowit提供的答案,以编辑从{$rowformat=ROW_FORMAT=Compressed;}到{$rowformat=ROW_FORMAT=Dynamic;}的行 恢复您的moodle数据库。例如:mysql-h YourAruoraDBEndNode-u YourAdminUser-p YourMoodleDBName