Неправильный ID модуля курса

Неправильный ID модуля курса

от Сергей Больной -
Количество ответов: 16

Имеется курс с тестами. Когда пытаюсь открыть любой тест выдается ошибка 


При этом самом курсе отображаются не все тесты....

Как это можно пофиксить?

В ответ на Сергей Больной

Re: Неправильный ID модуля курса

от Сергей Больной -
При всем этом, если сделать резервную копию этого курса, а потом восстановить как новый курс, то список тестов полный, и сами тесты открываются...
В ответ на Сергей Больной

Re: Неправильный ID модуля курса

от Vadim Tabunshchik -
Изображение пользователя Developers
Без «пол-литры» не разберешься. Проще восстановить курс из резервной копии (при её наличии) на момент полной работоспособности.
ЗЫ: руками в базе данных не баловались?
Включите отладку на разработчик, подробности посмотрим.
Попробуйте запустить admin/cli/fix_course_sequence.php. немного не то, а вдруг поможет улыбаюсь
В ответ на Vadim Tabunshchik

Re: Неправильный ID модуля курса

от Сергей Больной -
Как я выше написал, резервная копия с нерабочего курса была сделана, но когда из нее восстановили "новый курс", то он оказался рабочим и с полным списком тестов.
Я обратил внимание, что у нерабочего курса в таблице mdl_course_sections в поле sequence как раз не полный список айдишников модулей. Прописал один айди на тест, и тест появился, но гад все равно не открывается.... %)
В ответ на Vadim Tabunshchik

Re: Неправильный ID модуля курса

от Сергей Больной -
Кстати, спасибо, тот скрипт помог.
Теперь стало просто интересно почему связи поломались....
В ответ на Сергей Больной

Re: Неправильный ID модуля курса

от Vadim Tabunshchik -
Изображение пользователя Developers
Связи ломаются при ручном вмешательстве в БД. Если этого не было, проверяйте структуру БД https://moodle.org/mod/forum/discuss.php?d=399926#p1613723
В ответ на Vadim Tabunshchik

Re: Неправильный ID модуля курса

от Николай . -
Здравствуйте! После обновления moodle  и переноса на другой сервер стала появляться ошибка: Неправильный ID модуля курса. Moodle установлен на Windows server 2019
moodle 3.8.3+ (Build: 20200515)
unicode        
mariadb (5.5.5-10.4.8-MariaDB)    
php 7.3.11
Ошибка появляется при добавлении нового элемента или ресурса курса. Причем это во всех курсах и на главной странице тоже. Пробовал создавать новый курс, но это ничего не дает, все равно выдает ошибку.
Отладка РАЗРАБОТЧИК:

Пробовал это: admin/cli/fix_course_sequence.php -c=* --fix
Результат: Выправился один курс.

Пробовал это: admin\cli\check_database_schema.php
Результат: PHP Warning:  Module 'openssl' already loaded in Unknown on line 0
Database structure is ok.
Проверял базу данных в PhpMyAdmin, ошибок нет,  таблиц  с большим объемом нет.
На этом мои познания заканчиваются ((
Подскажите пожалуйста, как избавиться от этой ошибки?
ЗЫ: Если добавлять ресурс "Папка" путем перетаскивания ZIP. файла, то папка создается нормально.
В ответ на Николай .

Re: Неправильный ID модуля курса

от Vadim Tabunshchik -
Изображение пользователя Developers

Курс с id=95 существует?

В базе данных в таблице mdl_course_modules посмотрите, какие модули есть в этом курсе. Должны быть 3872, 3873 и т. д.

В столбике `section` должно быть 635, а у вас - 1.

Кроме того, в таблице mdl_course_sections в строке с `course` = '95', в поле sequence должны быть перечислены идентификаторы всех модулей этой секции.

В ответ на Vadim Tabunshchik

Re: Неправильный ID модуля курса

от Николай . -

Если смотреть в phpmyadmin таблицу mdl_course, id=95 там есть:
В базе данных в таблице mdl_course_modules есть 3872, 3873 и т. д.

В столбике `section`  635



В таблице mdl_course_sections в строке с `course` = '95', в поле sequence перечислены 4435,4436,4433,4434,3876,3877,3878,3879,3880,3881,3883,3884,3888


В ответ на Николай .

Re: Неправильный ID модуля курса

от Николай . -

Ой! У меня два курса с ID 95 😦

и другие тоже задвоены: 96, 97....

Или это так должно быть?



В ответ на Николай .

Re: Неправильный ID модуля курса

от Vadim Tabunshchik -
Изображение пользователя Developers

>>Или это так должно быть?

Отфильтруйте по course=95, проще будет увидеть все секции этого курса.

Курс то один, а секций же в нем больше, поэтому и строк в таблице столько же, сколько секций в курсе. В строке с id=635 указан искомый курс (95), модули, размещенные в секции (3702, 3872 и т. д), а в столбике section что видим? Ноль (0)

001

Эти модули в курсе действительно размещены в разделе без названия (самый верхний)?

>>В таблице mdl_course_sections в строке с `course` = '95', в поле sequence перечислены 4435,4436,4433,4434,3876,3877,3878,3879,3880,3881,3883,3884,3888

Вы не ту строку смотрите, нужна строка с ID=635

В ответ на Vadim Tabunshchik

Re: Неправильный ID модуля курса

от Николай . -
А разве можно разместить модуль в курсе без названия?
Если только при обновлении что нибудь нарушилось...
Как-то можно понять по базе данных, что это за курс? Или может есть другие варианты, как это поправить? Честно говоря я не очень хорошо соображаю в базах данных ((
В ответ на Николай .

Re: Неправильный ID модуля курса

от Vadim Tabunshchik -
Изображение пользователя Developers

Кто говорил про «курс без названия»? Речь шла о самой верхней секции любого курса, которая без названия во вновь созданном курсе или имеет название «Общее» после редактирования этой секции.

Какой это курс, видно на вашем первом скрине в строке с id=95 - короткое название курса «ОФО»

В ответ на Vadim Tabunshchik

Re: Неправильный ID модуля курса

от Николай . -
Спасибо Вам большое!
Примерное направление понял, куда копать. Буду разбираться, на следующей неделе отпишусь о результате.
В ответ на Николай .

Re: Неправильный ID модуля курса

от Николай . -
Добрый день!
Сегодня удалил курс, на который было подозрение, но ничего не изменилось. По прежнему невозможно добавить новый элемент или ресурс. ((
Ошибка:
Неправильный ID модуля курса

Подробнее об этой ошибке
Debug info: SELECT id,course FROM {course_modules} WHERE id = ?
[array (
0 => 5740,
)]
Error code: invalidcoursemodule
Stack trace:

line 1562 of \lib\dml\moodle_database.php: dml_missing_record_exception thrown
line 1538 of \lib\dml\moodle_database.php: call to moodle_database->get_record_select()
line 7189 of \lib\accesslib.php: call to moodle_database->get_record()
line 116 of \mod\folder\lib.php: call to context_module::instance()
line 128 of \course\modlib.php: call to folder_add_instance()
line 154 of \course\modedit.php: call to add_moduleinfo()
В ответ на Николай .

Re: Неправильный ID модуля курса

от Николай . -
Решил заглянуть в mysql_error.log
Совсем всё грустно (

В ответ на Николай .

Re: Неправильный ID модуля курса

от Николай . -
В общем, с проблемой так и не разобрался. Развернул новую базу и перенёс все курсы и пользователей. Ушло два выходных дня ))