执行数据库创建时,Aurora会向Moodle抛出以下错误:
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
它发生在每个包含BIGINT(10) id
列的表格中,例如mdl_config
或mdl_course
。
它似乎与Barracuda格式相关。数据库中存在的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
。
答案 0 :(得分:0)
此问题的解决方案是创建 MySQL RDS 实例而不是 Aurora RDS ,继续 Moodle 安装并在完成后,创建 MySQL RDS 的备份,并在 Aurora RDS 中恢复。
问题仅出现在安装阶段,之后 Aurora RDS 可以与之前创建的安装架构一起使用。
答案 1 :(得分:0)
我找到了解决此问题的方法。我们需要将ROW_FORMAT更改为" Dynamic"只有这样才行。要更改ROW_FORMAT,请从Moodle目录中打开以下文件: 的moodle / LIB / DML / mysqli_native_moodle_database.php
从{$ rowformat =" ROW_FORMAT = Compressed&#34 ;;编辑第420行; } {to rowformat =" ROW_FORMAT = Dynamic&#34 ;; }
它实际上使if条件无效,如果是,则检查DB是否支持Compressed ROW_FORMAT,然后将ROW_FORMAT设置为Compressed。这是唯一让它为我工作的黑客。
答案 2 :(得分:0)
如果要将现有的onprem moodle迁移到AWS aurora mysql数据库,请执行以下操作(假设两面都是linux)。
确保您已将当前的Moody升级到将要安装在AWS上的相同版本(首先进行备份)
执行mysqldump例如:mysqldump --allow-keywords --opt -uAdminUser -p MoodleDBName> moodle_onprem.sql
tar并压缩sql(使传输处理更小),例如:tar cvzf moodle_onprem.tgz moodle_onprem.sql
使用您喜欢的文件传输工具将tgz文件复制到3c2实例(可能是您的穆德服务器),该实例可以访问auroa。 (我使用了一个简单的scp,因为我们有直接的连接)例如:scp -i / home / ec2-user / id_rsa someuser @ onprembox:/var/www/html/moodle-onprem.tgz ./
解压缩文件。例如:tar xvzf moodle-onprem.tgz
重要步骤。将行格式更改为DYNAMIC例如:sed -i“ s / ROW_FORMAT = COMPRESSED / ROW_FORMAT = DYNAMIC /” moodle-onprem.sql
还可以修改moodle / lib / dml / mysqli_native_moodle_database.php参见Moodle with Amazon Aurora: Index column size too large. The maximum column size is 767 bytes rowit的答案,以编辑{$ rowformat =“ ROW_FORMAT = Compressed”的行; }至{$ rowformat =“ ROW_FORMAT =动态”; }
还原您的穆德数据库。例如:mysql -h YourAruoraDBEndNode -u YourAdminUser -p YourMoodleDBName
将您的情绪数据和情绪数据传输到aws moodle服务器,您应该已经准备就绪。
答案 3 :(得分:0)
我在 Windows/IIS/MySQL/AWS/RDS 上安装 Moodle 3.11 时偶然发现了这个问题。按照上面来自@Rohit 和@ErrorCode67 的“{ $rowformat = "ROW_FORMAT=Compressed"; } 到 { $rowformat = "ROW_FORMAT=Dynamic"; }” 提示,我打开了“moodle/lib/dml/mysqli_native_moodle_database.php”但不幸的是第 420 行不是我所期望的。
相反,在第 401 行,我发现了以下内容 -
// All the tests passed, we can safely use ROW_FORMAT=Compressed in sql statements.
$this->compressedrowformatsupported = true;
更改为以下似乎对我有用-
$this->compressedrowformatsupported = false;