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% связано с вашим, но у меня была аналогичная проблема. Интересно, что в руководстве по установке есть две ошибки:
- Следующее утверждение неверно:
GRANT LOCK TABLES вкл . TO 'ilias@localhost';
на самом деле должно быть
GRANT LOCK TABLES вкл . TO 'ilias'@'localhost';
- 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.