使用Amazon Aurora的Moodle:索引列大小太大。最大列大小为767字节

时间:2017-07-11 19:43:00

标签: moodle amazon-rds-aurora

执行数据库创建时,Aurora会向Moodle抛出以下错误:

ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.

它发生在每个包含BIGINT(10) id列的表格中,例如mdl_configmdl_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

4 个答案:

答案 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)。

  1. 确保您已将当前的Moody升级到将要安装在AWS上的相同版本(首先进行备份)

  2. 执行mysqldump例如:mysqldump --allow-keywords --opt -uAdminUser -p MoodleDBName> moodle_onprem.sql

  3. tar并压缩sql(使传输处理更小),例如:tar cvzf moodle_onprem.tgz moodle_onprem.sql

  4. 使用您喜欢的文件传输工具将tgz文件复制到3c2实例(可能是您的穆德服务器),该实例可以访问auroa。 (我使用了一个简单的scp,因为我们有直接的连接)例如:scp -i / home / ec2-user / id_rsa someuser @ onprembox:/var/www/html/moodle-onprem.tgz ./

  5. 解压缩文件。例如:tar xvzf moodle-onprem.tgz

  6. 重要步骤。将行格式更改为DYNAMIC例如:sed -i“ s / ROW_FORMAT = COMPRESSED / ROW_FORMAT = DYNAMIC /” moodle-onprem.sql

  7. 还可以修改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 =动态”; }

  8. 还原您的穆德数据库。例如: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;