ILIAS LMS v6.1: Невозможно обойти выбор БД в сценарии установки с использованием php 7.4 и MySQL 8

Я не могу обойти выбор базы данных в сценарии установки (/setup/setup.php). Моя установка:

  • Ubuntu 20.04
  • PHP 7.4.9
  • MySQL 8.0.21
  • Илиас 6.1 (сегодня тоже пробовал 6.2, но столкнулся с той же проблемой)

Я знаю, что сервер базы данных и клиент работают нормально (около дюжины других приложений LAMP, работающих на нем, и проверили конкретное соединение ilias с mysql в CLI). Но сценарий продолжает возвращаться ко мне с:

"База данных недоступна. Проверьте учетные данные и существует ли база данных"

Я пробовал варианты:

  • localhost против 127.0.0.1
  • MyISAM против движка InnoDB

Я добавил несколько операторов отладки в /Services/Database/classes/PDO/class.ilDBPdo.php, и возвращенный код ошибки - 42000. Итак, я добавил следующее в my.cnf: sql_mode = "IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

  • и подтвердили, что строгий режим действительно отключен.

Вот кое-что интересное: если я удалю массив $options из вызова функции в строке 98 файла /Services/Database/classes/PDO/class.ilDBPdo.php, код ошибки не будет возвращен, но сценарий установки все равно вернется с ошибкой сообщение, упомянутое выше.

Извините, если я упускаю из виду что-то очевидное, но любые подсказки были бы очень признательны.

Ура, Онно

0 ответов

Я не уверен, что мое решение на 100% связано с вашим, но у меня была аналогичная проблема. Интересно, что в руководстве по установке есть две ошибки:

  1. Следующее утверждение неверно:

GRANT LOCK TABLES вкл . TO 'ilias@localhost';

на самом деле должно быть

GRANT LOCK TABLES вкл . TO 'ilias'@'localhost';

  1. sql-mode не должен включать "no_auto_create_user"

sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

на самом деле должно быть

sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

поскольку NO_AUTO_CREATE_USER является значением по умолчанию для mysql, начиная с 5.7. См. Раздел " Сделать NO_AUTO_CREATE_USER sql_mode поведением по умолчанию".

На самом деле это заставило меня заглянуть в Services/Database/classes/PDO/class.ilDBPdoMySQL.php, где я нашел эту строку:

$this-> pdo-> query("SET SESSION sql_mode = 'IGNORE_SPACE, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION';");

Я удалил NO_AUTO_CREATE_USER и смог полностью настроить ILIAS.

Другие вопросы по тегам