ILIAS LMS v6.1:使用php 7.4和MySQL 8无法在安装脚本中获得数据库选择

时间:2020-08-20 10:07:39

标签: ilias

我无法超越设置脚本(/setup/setup.php)中的“数据库选择”。我的设置:

  • Ubuntu 20.04
  • PHP 7.4.9
  • MySQL 8.0.21
  • Ilias 6.1(今天也尝试过6.2,但遇到了同样的问题)

我知道数据库服务器和客户端运行正常(大约有十多个LAMP应用程序在其上运行,并在CLI上检查了与mysql的特定ilias连接)。但是脚本不断通过以下方式回到我身边:

“无法访问数据库。请检查凭据以及数据库是否存在”

我尝试了多种选择:

  • 本地主机与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”

  • 并确认严格模式确实已禁用。

有趣的是:如果我从/Services/Database/classes/PDO/class.ilDBPdo.php的第98行的函数调用中删除$ options数组,则不会返回任何错误代码-但安装脚本仍会返回上面提到的错误消息。

对不起,如果我忽略了一些明显的内容,但是任何线索将不胜感激。

干杯, 恩诺

1 个答案:

答案 0 :(得分:0)

我不确定我的解决方案是否与您的解决方案100%相关,但是我遇到了类似的问题。有趣的是,install manual中存在两个错误:

  1. 以下陈述是错误的:
上的

GRANT LOCK TABLES。到'ilias @ localhost';

实际上应该是

上的

GRANT LOCK TABLES。到'ilias'@'localhost';

  1. sql模式不应包含“ 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

从5.7开始,

因为NO_AUTO_CREATE_USER是mysql的默认值。参见Make NO_AUTO_CREATE_USER sql_mode behavior the default

这实际上使我了解了以下行: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。