我无法超越设置脚本(/setup/setup.php)中的“数据库选择”。我的设置:
我知道数据库服务器和客户端运行正常(大约有十多个LAMP应用程序在其上运行,并在CLI上检查了与mysql的特定ilias连接)。但是脚本不断通过以下方式回到我身边:
“无法访问数据库。请检查凭据以及数据库是否存在”
我尝试了多种选择:
我已经在/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数组,则不会返回任何错误代码-但安装脚本仍会返回上面提到的错误消息。
对不起,如果我忽略了一些明显的内容,但是任何线索将不胜感激。
干杯, 恩诺
答案 0 :(得分:0)
我不确定我的解决方案是否与您的解决方案100%相关,但是我遇到了类似的问题。有趣的是,install manual中存在两个错误:
在上的GRANT LOCK TABLES。
到'ilias @ localhost';
实际上应该是
在上的GRANT LOCK TABLES。
到'ilias'@'localhost';
sql_mode = IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
实际上应该是
从5.7开始,sql_mode = IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
因为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。