Ошибка работы плагина "Competence gird"

Ошибка работы плагина "Competence gird"

от Павел Молчанов -
Количество ответов: 6

Всем доброго времени суток! При работе с плагином , который называется   "Competence gird" возникает ошибка базы данных. Имел ли кто-нибудь отношение с данным плагином? Может, знаете, как с ним работать? Буду благодарен советам. Прикладываю скрин ошибки. Спасибо!

В ответ на Павел Молчанов

Re: Ошибка работы плагина "Competence gird"

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

Это проблема запросов, не адаптированных под MS SQL. Кто вас надоумил использовать эту базу данных? улыбаюсь Пишите на баг-трекер разработчику плагина.

В ответ на Павел Молчанов

Re: Ошибка работы плагина "Competence gird"

от Vadim Tabunshchik -
Изображение пользователя Developers
Строка 103 data.php содержит запрос к БД
g::$DB->execute("INSERT INTO {".BLOCK_EXACOMP_DB_DATASOURCES."} (id, source) VALUES (?, ?)", array($source_local_id, $source_global_id));
Он и вызывает ошибку. По хорошему тут надо было бы использовать не execute, а insert_record_raw, потому что эта функция есть для всех типов БД, но для MSSQL она, кроме того, включает нужные запросы к БД перед и после проведения транзакции:
'SET IDENTITY_INSERT {'.$table.'} ON' и 'SET IDENTITY_INSERT {'.$table.'} OFF'
В ответ на Vadim Tabunshchik

Re: Ошибка работы плагина "Competence gird"

от Павел Молчанов -
Cпасибо, я поменял execute на insert_record_raw , но почему-то ошибка никуда не делась...
В ответ на Павел Молчанов

Re: Ошибка работы плагина "Competence gird"

от Vadim Tabunshchik -
Изображение пользователя Developers
Я говорил не «поменять», а «использовать» - это разные вещи. Естественно, код нужно переписать для функции insert_record_raw, для этого нужно хотя бы с ней познакомиться: /lib/dml/sqlsrv_native_moodle_database.php
Создайте тикет на баг-трекере разработчика, быстрее решится проблема. Вы же логики работы этой части кода не знаете (и я не знаю), как тут правильно исправить, не ясно.
Попробуйте изменить строку 103 так:
g::$DB->insert_record_raw(BLOCK_EXACOMP_DB_DATASOURCES, array('id' => $source_local_id, 'source' => $source_global_id), false);
Учтите - всё делаете на свой страх и риск. Если что-то поломается, я не виноват улыбаюсь)
В ответ на Vadim Tabunshchik

Re: Ошибка работы плагина "Competence gird"

от Павел Молчанов -
ОШИБКА: неверное количество параметров запроса. Ожидается 4, получено 2
Debug info:
Error code: invalidqueryparam
Stack trace:
line 926 of \lib\dml\moodle_database.php: dml_exception thrown
line 408 of \lib\dml\sqlsrv_native_moodle_database.php: call to moodle_database->fix_sql_params()
line 1058 of \lib\dml\sqlsrv_native_moodle_database.php: call to sqlsrv_native_moodle_database->do_query()
line ? of unknownfile: call to sqlsrv_native_moodle_database->insert_record_raw()
line 187 of \blocks\exacomp\lib\common.php: call to call_user_func_array()
line 103 of \blocks\exacomp\classes\data.php: call to block_exacomp\common\exadb_forwarder->__call()
line 1431 of \blocks\exacomp\classes\data.php: call to block_exacomp\data::add_source_if_not_exists()
line 1308 of \blocks\exacomp\classes\data.php: call to block_exacomp\data_importer::do_import_file()
line 278 of \blocks\exacomp\import.php: call to block_exacomp\data_importer::do_import_string()