Moodle с Amazon Aurora: слишком большой размер столбца индекса. Максимальный размер столбца 767 байт.

При создании базы данных 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.


person Camilo Sampedro    schedule 11.07.2017    source источник


Ответы (4)


Я нашел обходной путь для этой проблемы. Нам нужно изменить ROW_FORMAT на «Динамический», только тогда он заработает. Чтобы изменить ROW_FORMAT, откройте следующий файл из каталога Moodle: moodle/lib/dml/mysqli_native_moodle_database.php

Отредактируйте строку 420 из { $rowformat = "ROW_FORMAT=Compressed"; } to { $rowformat = "ROW_FORMAT=Динамический"; }

Это фактически аннулирует условие if, которое проверяет, поддерживает ли БД сжатый ROW_FORMAT, если да, то устанавливает для ROW_FORMAT значение Compressed. Это единственный хак, который заставил его работать на меня.

person Rohit    schedule 10.12.2017

Решение этой проблемы состоит в том, чтобы создать экземпляр MySQL RDS вместо Aurora RDS, продолжить установку Moodle и после ее завершения создать резервное копирование MySQL RDS и восстановление его внутри Aurora RDS.

Проблема возникает только на этапе установки, после чего Aurora RDS можно использовать с ранее созданной схемой установки.

person Camilo Sampedro    schedule 12.07.2017

Если вы переносите существующую базу данных onprem moodle в базу данных aws aurora mysql, выполните следующие действия (предполагается, что Linux используется с обеих сторон).

  1. убедитесь, что вы обновили свой текущий мудл до той же версии, которую вы будете устанавливать на aws (сначала сделайте резервные копии)

  2. выполнить mysqldump ex:mysqldump --allow-keywords --opt -uAdminUser -p MoodleDBName > moodle_onprem.sql

  3. tar и сжать sql (уменьшает размер переноса) ex: tar cvzf moodle_onprem.tgz moodle_onprem.sql

  4. скопируйте файл tgz на экземпляр 3c2 (вероятно, на ваш сервер moodle), который имеет доступ к auroa, используя ваш любимый инструмент для передачи файлов. (Я использовал простой scp, так как у нас прямое соединение) ex: scp -i /home/ec2-user/id_rsa someuser@onprembox:/var/www/html/moodle-onprem.tgz ./

  5. Распаковать/сжать файл. например: tar xvzf moodle-onprem.tgz

  6. Важный шаг. Измените формат строки на ДИНАМИЧЕСКИЙ, например: sed -i "s/ ROW_FORMAT=COMPRESSED/ ROW_FORMAT=DYNAMIC/" moodle-onprem.sql

  7. Также измените файл moodle/lib/dml/mysqli_native_moodle_database.php, см. Moodle с Amazon Aurora: слишком большой размер столбца индекса. Максимальный размер столбца – 767 байт, ответьте rowit на редактирование строки из { $rowformat = "ROW_FORMAT=Compressed"; } to { $rowformat = "ROW_FORMAT=Динамический"; }

  8. Восстановите базу данных Moodle. пример: mysql -h YourAruoraDBEndNode -u YourAdminUser -p YourMoodleDBName ‹ moodle-onprem.sql

Перенесите данные своего настроения и настроения на сервер настроения aws, и все будет готово.

person ErrorCode67    schedule 02.04.2019

Я столкнулся с этой проблемой при установке Moodle 3.11 в Windows/IIS/MySQL/AWS/RDS. После {$rowformat = ROW_FORMAT=Compressed; } to { $rowformat = ROW_FORMAT=Dynamic; } подсказки от @Rohit и @ErrorCode67 выше. Я открыл 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;
person Nick Howard    schedule 06.07.2021