I am running a test version of my Moodle 3.5 system on my Mac using Apache 2.4 37 and PHP 7.2. I upgraded the database from mySQL 5.6.36 to mariadb 10.3.11. Everything appeared to work perfectly, but running the Administration > server > environment check to see whether we were ready for a Moodle upgrade to 3.6 complained that my CFG->dbtype should be changed from mysqli to mariadb in my moodle/config.php file.
I made the change, but now when I try to log in, I get an error:
Exception -- Call to a member function IsConneceted() on boolean.
and the theme displays only the header box.
Reverting to CFG->dbtype="mysqli" appears to fix the problem -- if I reload the page three times, it finally displays correctly and I am logged in. All of the functions then work correctly as far as I can tell (i.e., I can take a quiz with CLOZE answers and it scores properly; I can access random course pages).
I have tried purging caches after setting CFG->dbtype = "mariadb", but the error persists if CFG->dbtype is set to "mariadb".
I use an external database (which is part of the same database instance) for authentication. There is no "mariadb" option to set for auth_db type on the Plugins > authentication > external database page, so it is still set to mysqli and there appears to be no way to change this.
Setting debug on gives the following error stack:
Error code: generalexceptionmessage
- line 462 of /lib/adodb/drivers/adodb-mysql.inc.php: Error thrown
- line 493 of /lib/adodb/drivers/adodb-mysql.inc.php: call to ADODB_mysql->_connect()
- line 667 of /lib/adodb/adodb.inc.php: call to ADODB_mysql->_nconnect()
- line 869 of /enrol/database/lib.php: call to ADOConnection->Connect()
- line 144 of /enrol/database/lib.php: call to enrol_database_plugin->db_init()
- line 245 of /lib/enrollib.php: call to enrol_database_plugin->sync_user_enrolments()
- line 477 of /lib/classes/session/manager.php: call to enrol_check_plugins()
- line 4414 of /lib/moodlelib.php: call to core\session\manager::login_user()
- line 181 of /login/index.php: call to complete_user_login()