Здравствуйте!
Такая проблема со штатным модулем Битрикс «Обучение» или с версией MariaDB 10.5.12 (см. скриншоты):
после переезда на новый хостинг (adminvps.ru) и на MariaDB 10.5.12 при проверке системы, а именно — структуры базы данных — процесс всегда зависал на 20%, при этом со стороны хостинга была выполнена проверка самой базы и повреждений не наблюдалось, производительность превышала 30. Экспериментально, основываясь на замечаниях пользователей «Битрикс», решил удалить штатные модули Битрикс «Обучение» и «Форум», после чего повторил тестирование структуры базы данных и процесс успешно завершился, но с указанием на некоторые ошибки. Запустил «автоисправление ошибок», в результате чего их небольшая часть исправилась, но с таким сообщением:
[QUOTE]Цитата:
«Замечание. Автоисправление прошло успешно, но ряд полей (92) отличаются по типу, необходимо вручную их исправить на основе журнала проверки сайта»[/QUOTE]
Поскольку в базах данных я полный ноль, решил попробовать установить модули обратно без исправления ошибок вручную. Вначале вернул на место модуль «Форум»: полет нормальный — проверка системы прошла без зависаний, количество ошибок в структуре базы данных не увеличилось. Затем начал ставить модуль «Обучение», но установка завершилась ошибкой, из-за которой не получалось войти в административную часть сайта:
[QUOTE]Цитата:
«При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php».[/QUOTE]
Полный лог ошибок могу привести по запросу.
Решил провести удаление модулей кардинально, с удалением малейших следов.
В итоге была создана абсолютно новая база данных при чистой установке CMS, без какой-либо связи с прошлыми настройками и файлами. Были установлены все штатные модули последней версии, за исключением модуля «Обучение», из-за которого раньше возникали конфликты. Было проведено тестирование «Проверка системы — Тестирование конфигурации». Ошибки отсутствовали.
Затем был установлен модуль «Обучение» и проведено повторное тестирование. По его результатам выдается сообщение:
[QUOTE]«Ошибка! Структура базы данных имеет ошибки. Всего 6, автоматически могут быть исправлены: 6. Исправить»[/QUOTE]
Автоисправление не привело к устранению ошибок, оно заканчивается сообщением:
[QUOTE]«Ошибка! Mysql Query Error: CRE ATE TABLE b_learn_test( ID int(11) not null AUTO_INCREMENT, COURSE_ID int(11) not null REFERENCES b_learn_course(ID), TIMESTAMP_X timestamp not null default current_timestamp on update current_timestamp, SORT int(11) not null default '500', ACTIVE char(1) not null default 'Y', NAME varchar(255) not null, DESCRIPTION text, DESCRIPTION_TYPE char(4) not null default 'text', ATTEMPT_LIMIT int(11) not null default '0', TIME_LIMIT int(11) default '0', COMPLETED_SCORE int(11), QUESTIONS_FROM char(1) not null default 'A', QUESTIONS_FROM_ID int(11) not null default '0', QUESTIONS_AMOUNT int(11) not null default '0', RANDOM_QUESTIONS char(1) not null default 'Y', RANDOM_ANSWERS char(1) not null default 'Y', APPROVED char(1) not null default 'Y', INCLUDE_SELF_TEST char(1) not null default 'N', PASSAGE_TYPE char(1) not null default '0', PREVIOUS_TEST_ID int(11) REFERENCES b_learn_test(ID), PREVIOUS_TEST_SCORE int(11) default 0, INCORRECT_CONTROL char(1) not null default 'N', CURRENT_INDICATION int(11) not null default '0', FINAL_INDICATION int(11) not null default '0', MIN_TIME_BETWEEN_ATTEMPTS int(11) not null default '0', SHOW_ERRORS char(1) not null default 'N', NEXT_QUESTION_ON_ERROR char(1) not null default 'Y', PRIMARY KEY (ID), INDEX IX_B_LEARN_TEST1(COURSE_ID), INDEX IX_B_LEARN_TEST2(PREVIOUS_TEST_ID)) [[1005] Can't cre ate table `bx24_new`.`b_learn_test` (errno: 150 "Foreign key constraint is incorrectly formed")]»[/QUOTE]
В журнале наблюдается следующее:
[QUOTE]1. Отсутствует таблица b_learn_test
2. Отсутствует таблица b_learn_attempt
3. Отсутствует таблица b_learn_test_result
4. Отсутствует таблица b_learn_gradebook
5. Отсутствует таблица b_learn_certification
6. Отсутствует таблица b_learn_test_mark[/QUOTE]
[CODE]CRE ATE TABLE b_learn_test
(
ID int(11) not null AUTO_INCREMENT,
COURSE_ID int(11) not null REFERENCES b_learn_course(ID),
TIMESTAMP_X timestamp not null default current_timestamp on update current_timestamp,
SORT int(11) not null default '500',
ACTIVE char(1) not null default 'Y',
NAME varchar(255) not null,
DESCRIPTION text,
DESCRIPTION_TYPE char(4) not null default 'text',
ATTEMPT_LIMIT int(11) not null default '0',
TIME_LIMIT int(11) default '0',
COMPLETED_SCORE int(11),
QUESTIONS_FROM char(1) not null default 'A',
QUESTIONS_FROM_ID int(11) not null default '0',
QUESTIONS_AMOUNT int(11) not null default '0',
RANDOM_QUESTIONS char(1) not null default 'Y',
RANDOM_ANSWERS char(1) not null default 'Y',
APPROVED char(1) not null default 'Y',
INCLUDE_SELF_TEST char(1) not null default 'N',
PASSAGE_TYPE char(1) not null default '0',
PREVIOUS_TEST_ID int(11) REFERENCES b_learn_test(ID),
PREVIOUS_TEST_SCORE int(11) default 0,
INCORRECT_CONTROL char(1) not null default 'N',
CURRENT_INDICATION int(11) not null default '0',
FINAL_INDICATION int(11) not null default '0',
MIN_TIME_BETWEEN_ATTEMPTS int(11) not null default '0',
SHOW_ERRORS char(1) not null default 'N',
NEXT_QUESTION_ON_ERROR char(1) not null default 'Y',
PRIMARY KEY (ID),
INDEX IX_B_LEARN_TEST1(COURSE_ID),
INDEX IX_B_LEARN_TEST2(PREVIOUS_TEST_ID)
);
CRE ATE TABLE b_learn_attempt
(
ID int(11) unsigned not null AUTO_INCREMENT,
TEST_ID int(11) not null REFERENCES b_learn_test(ID),
STUDENT_ID int(18) not null,
DATE_START datetime not null,
DATE_END datetime,
STATUS char(1) not null default 'B',
COMPLETED char(1) not null default 'N',
SCORE int default 0,
MAX_SCORE int default 0,
QUESTIONS int(11) not null default '0',
PRIMARY KEY (ID),
INDEX IX_B_LEARN_ATTEMPT1(STUDENT_ID, TEST_ID)
);
CRE ATE TABLE b_learn_test_result
(
ID int(11) unsigned not null AUTO_INCREMENT,
ATTEMPT_ID int(11) unsigned not null REFERENCES b_learn_attempt(ID),
QUESTION_ID int(11) not null REFERENCES b_learn_question(ID),
RESPONSE text,
POINT int not null default 0,
CORRECT char(1) not null default 'N',
ANSWERED char(1) not null default 'N',
PRIMARY KEY (ID),
INDEX IX_B_LEARN_TEST_RESULT1(ATTEMPT_ID,QUESTION_ID),
INDEX IX_B_LEARN_TEST_RESULT2(QUESTION_ID, ANSWERED, CORRECT)
);
CRE ATE TABLE b_learn_gradebook
(
ID int(11) unsigned not null AUTO_INCREMENT,
STUDENT_ID int(18) not null,
TEST_ID int(11) not null REFERENCES b_learn_test(ID),
RESULT int,
MAX_RESULT int,
ATTEMPTS int(11) not null default '1',
COMPLETED char(1) not null default 'N',
EXTRA_ATTEMPTS int(11) not null default '0',
PRIMARY KEY (ID),
UNIQUE UX_B_LEARN_GRADEBOOK1(STUDENT_ID,TEST_ID)
);
CRE ATE TABLE b_learn_certification
(
ID int(11) unsigned not null auto_increment,
STUDENT_ID int(18) not null,
COURSE_ID int(11) not null REFERENCES b_learn_course(ID),
TIMESTAMP_X timestamp not null default current_timestamp on update current_timestamp,
DATE_CREATE datetime,
ACTIVE char(1) not null default 'Y',
SORT int(11) not null default '500',
FROM_ONLINE char(1) not null default 'Y',
PUBLIC_PROFILE char(1) not null default 'Y',
SUMMARY int(11) not null default '0',
MAX_SUMMARY int(11) not null default '0',
PRIMARY KEY(ID),
INDEX IX_B_LEARN_CERTIFICATION1(STUDENT_ID, COURSE_ID)
);
CRE ATE TABLE b_learn_test_mark (
ID int(11) not null auto_increment,
TEST_ID int(11) not null REFERENCES b_learn_test (ID),
SCORE int(11) not null,
MARK varchar(50) not null,
DESCRIPTION text null,
PRIMARY KEY (ID),
INDEX IX_B_LEARN_TEST_MARK1(TEST_ID)»[/CODE]
Понимаю, что у меня нестандартное веб-окружение («1С-Битрикс: Корпоративный портал 21.400.300», редакция «1С-Битрикс24: Интернет-магазин + CRM», CentOS 7.9, PHP 7.4.23, Apache 2.4, режим работы FastCGI (Nginx + PHP-FPM), MariaDB 10.5.12 [InnoDB]), тем не менее прошу оказать посильную помощь в устранении проблемы.
Такая проблема со штатным модулем Битрикс «Обучение» или с версией MariaDB 10.5.12 (см. скриншоты):
после переезда на новый хостинг (adminvps.ru) и на MariaDB 10.5.12 при проверке системы, а именно — структуры базы данных — процесс всегда зависал на 20%, при этом со стороны хостинга была выполнена проверка самой базы и повреждений не наблюдалось, производительность превышала 30. Экспериментально, основываясь на замечаниях пользователей «Битрикс», решил удалить штатные модули Битрикс «Обучение» и «Форум», после чего повторил тестирование структуры базы данных и процесс успешно завершился, но с указанием на некоторые ошибки. Запустил «автоисправление ошибок», в результате чего их небольшая часть исправилась, но с таким сообщением:
[QUOTE]Цитата:
«Замечание. Автоисправление прошло успешно, но ряд полей (92) отличаются по типу, необходимо вручную их исправить на основе журнала проверки сайта»[/QUOTE]
Поскольку в базах данных я полный ноль, решил попробовать установить модули обратно без исправления ошибок вручную. Вначале вернул на место модуль «Форум»: полет нормальный — проверка системы прошла без зависаний, количество ошибок в структуре базы данных не увеличилось. Затем начал ставить модуль «Обучение», но установка завершилась ошибкой, из-за которой не получалось войти в административную часть сайта:
[QUOTE]Цитата:
«При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php».[/QUOTE]
Полный лог ошибок могу привести по запросу.
Решил провести удаление модулей кардинально, с удалением малейших следов.
В итоге была создана абсолютно новая база данных при чистой установке CMS, без какой-либо связи с прошлыми настройками и файлами. Были установлены все штатные модули последней версии, за исключением модуля «Обучение», из-за которого раньше возникали конфликты. Было проведено тестирование «Проверка системы — Тестирование конфигурации». Ошибки отсутствовали.
Затем был установлен модуль «Обучение» и проведено повторное тестирование. По его результатам выдается сообщение:
[QUOTE]«Ошибка! Структура базы данных имеет ошибки. Всего 6, автоматически могут быть исправлены: 6. Исправить»[/QUOTE]
Автоисправление не привело к устранению ошибок, оно заканчивается сообщением:
[QUOTE]«Ошибка! Mysql Query Error: CRE ATE TABLE b_learn_test( ID int(11) not null AUTO_INCREMENT, COURSE_ID int(11) not null REFERENCES b_learn_course(ID), TIMESTAMP_X timestamp not null default current_timestamp on update current_timestamp, SORT int(11) not null default '500', ACTIVE char(1) not null default 'Y', NAME varchar(255) not null, DESCRIPTION text, DESCRIPTION_TYPE char(4) not null default 'text', ATTEMPT_LIMIT int(11) not null default '0', TIME_LIMIT int(11) default '0', COMPLETED_SCORE int(11), QUESTIONS_FROM char(1) not null default 'A', QUESTIONS_FROM_ID int(11) not null default '0', QUESTIONS_AMOUNT int(11) not null default '0', RANDOM_QUESTIONS char(1) not null default 'Y', RANDOM_ANSWERS char(1) not null default 'Y', APPROVED char(1) not null default 'Y', INCLUDE_SELF_TEST char(1) not null default 'N', PASSAGE_TYPE char(1) not null default '0', PREVIOUS_TEST_ID int(11) REFERENCES b_learn_test(ID), PREVIOUS_TEST_SCORE int(11) default 0, INCORRECT_CONTROL char(1) not null default 'N', CURRENT_INDICATION int(11) not null default '0', FINAL_INDICATION int(11) not null default '0', MIN_TIME_BETWEEN_ATTEMPTS int(11) not null default '0', SHOW_ERRORS char(1) not null default 'N', NEXT_QUESTION_ON_ERROR char(1) not null default 'Y', PRIMARY KEY (ID), INDEX IX_B_LEARN_TEST1(COURSE_ID), INDEX IX_B_LEARN_TEST2(PREVIOUS_TEST_ID)) [[1005] Can't cre ate table `bx24_new`.`b_learn_test` (errno: 150 "Foreign key constraint is incorrectly formed")]»[/QUOTE]
В журнале наблюдается следующее:
[QUOTE]1. Отсутствует таблица b_learn_test
2. Отсутствует таблица b_learn_attempt
3. Отсутствует таблица b_learn_test_result
4. Отсутствует таблица b_learn_gradebook
5. Отсутствует таблица b_learn_certification
6. Отсутствует таблица b_learn_test_mark[/QUOTE]
[CODE]CRE ATE TABLE b_learn_test
(
ID int(11) not null AUTO_INCREMENT,
COURSE_ID int(11) not null REFERENCES b_learn_course(ID),
TIMESTAMP_X timestamp not null default current_timestamp on update current_timestamp,
SORT int(11) not null default '500',
ACTIVE char(1) not null default 'Y',
NAME varchar(255) not null,
DESCRIPTION text,
DESCRIPTION_TYPE char(4) not null default 'text',
ATTEMPT_LIMIT int(11) not null default '0',
TIME_LIMIT int(11) default '0',
COMPLETED_SCORE int(11),
QUESTIONS_FROM char(1) not null default 'A',
QUESTIONS_FROM_ID int(11) not null default '0',
QUESTIONS_AMOUNT int(11) not null default '0',
RANDOM_QUESTIONS char(1) not null default 'Y',
RANDOM_ANSWERS char(1) not null default 'Y',
APPROVED char(1) not null default 'Y',
INCLUDE_SELF_TEST char(1) not null default 'N',
PASSAGE_TYPE char(1) not null default '0',
PREVIOUS_TEST_ID int(11) REFERENCES b_learn_test(ID),
PREVIOUS_TEST_SCORE int(11) default 0,
INCORRECT_CONTROL char(1) not null default 'N',
CURRENT_INDICATION int(11) not null default '0',
FINAL_INDICATION int(11) not null default '0',
MIN_TIME_BETWEEN_ATTEMPTS int(11) not null default '0',
SHOW_ERRORS char(1) not null default 'N',
NEXT_QUESTION_ON_ERROR char(1) not null default 'Y',
PRIMARY KEY (ID),
INDEX IX_B_LEARN_TEST1(COURSE_ID),
INDEX IX_B_LEARN_TEST2(PREVIOUS_TEST_ID)
);
CRE ATE TABLE b_learn_attempt
(
ID int(11) unsigned not null AUTO_INCREMENT,
TEST_ID int(11) not null REFERENCES b_learn_test(ID),
STUDENT_ID int(18) not null,
DATE_START datetime not null,
DATE_END datetime,
STATUS char(1) not null default 'B',
COMPLETED char(1) not null default 'N',
SCORE int default 0,
MAX_SCORE int default 0,
QUESTIONS int(11) not null default '0',
PRIMARY KEY (ID),
INDEX IX_B_LEARN_ATTEMPT1(STUDENT_ID, TEST_ID)
);
CRE ATE TABLE b_learn_test_result
(
ID int(11) unsigned not null AUTO_INCREMENT,
ATTEMPT_ID int(11) unsigned not null REFERENCES b_learn_attempt(ID),
QUESTION_ID int(11) not null REFERENCES b_learn_question(ID),
RESPONSE text,
POINT int not null default 0,
CORRECT char(1) not null default 'N',
ANSWERED char(1) not null default 'N',
PRIMARY KEY (ID),
INDEX IX_B_LEARN_TEST_RESULT1(ATTEMPT_ID,QUESTION_ID),
INDEX IX_B_LEARN_TEST_RESULT2(QUESTION_ID, ANSWERED, CORRECT)
);
CRE ATE TABLE b_learn_gradebook
(
ID int(11) unsigned not null AUTO_INCREMENT,
STUDENT_ID int(18) not null,
TEST_ID int(11) not null REFERENCES b_learn_test(ID),
RESULT int,
MAX_RESULT int,
ATTEMPTS int(11) not null default '1',
COMPLETED char(1) not null default 'N',
EXTRA_ATTEMPTS int(11) not null default '0',
PRIMARY KEY (ID),
UNIQUE UX_B_LEARN_GRADEBOOK1(STUDENT_ID,TEST_ID)
);
CRE ATE TABLE b_learn_certification
(
ID int(11) unsigned not null auto_increment,
STUDENT_ID int(18) not null,
COURSE_ID int(11) not null REFERENCES b_learn_course(ID),
TIMESTAMP_X timestamp not null default current_timestamp on update current_timestamp,
DATE_CREATE datetime,
ACTIVE char(1) not null default 'Y',
SORT int(11) not null default '500',
FROM_ONLINE char(1) not null default 'Y',
PUBLIC_PROFILE char(1) not null default 'Y',
SUMMARY int(11) not null default '0',
MAX_SUMMARY int(11) not null default '0',
PRIMARY KEY(ID),
INDEX IX_B_LEARN_CERTIFICATION1(STUDENT_ID, COURSE_ID)
);
CRE ATE TABLE b_learn_test_mark (
ID int(11) not null auto_increment,
TEST_ID int(11) not null REFERENCES b_learn_test (ID),
SCORE int(11) not null,
MARK varchar(50) not null,
DESCRIPTION text null,
PRIMARY KEY (ID),
INDEX IX_B_LEARN_TEST_MARK1(TEST_ID)»[/CODE]
Понимаю, что у меня нестандартное веб-окружение («1С-Битрикс: Корпоративный портал 21.400.300», редакция «1С-Битрикс24: Интернет-магазин + CRM», CentOS 7.9, PHP 7.4.23, Apache 2.4, режим работы FastCGI (Nginx + PHP-FPM), MariaDB 10.5.12 [InnoDB]), тем не менее прошу оказать посильную помощь в устранении проблемы.