← Back to team overview

mahara-contributors team mailing list archive

[Bug 1247715] Re: Upgrade to 1.8.0 fails - can't connect to mysql

 

To add some additional info about the link that Robert just posted, the
issue is that, if you specifically supply a $CFG->dbport value, then
Mahara appends that to the end of your $CFG->dbhost value before sending
it to mysqli_real_connect(), like "localhost:3306". The problem is that
mysqli doesn't support that. Instead, we need to supply the port number
as a separate argument (the fifth) to mysqli_real_connect().
Implementation-wise, in order to do that in ADODB, we need to manually
set the "$this->port" for the ADODB_mysqli object.

The workaround, is that if you're using port 3306 (which is the default
for MySQL), simply remove the $cfg->dbport line from your config.php
file.

If you are not using port 3306, then you'll need to patch the software
to fix it.

-- 
You received this bug notification because you are a member of Mahara
Contributors, which is subscribed to Mahara.
Matching subscriptions: Subscription for all Mahara Contributors -- please ask on #mahara-dev or mahara.org forum before editing or unsubscribing it!
https://bugs.launchpad.net/bugs/1247715

Title:
  Upgrade to 1.8.0 fails - can't connect to mysql

Status in Mahara ePortfolio:
  Confirmed

Bug description:
  After upgrading to 1.8.0 I couldn't open the admin/upgrade.php page.
  The error displayed stated that mahara could not connect to the mysql
  db. Running on Ubuntu LTS Server.

  After some poking around I managed to get things running by altering
  the code in init.php.

  The new code read:

      // Transform $CFG->dbtype into the name of the ADODB driver we will use
      if (is_postgres()) {
          $CFG->dbtype = 'postgres7';
      }
      else if (is_mysql()) {
          // If they have mysqli, use it. Otherwise, fall back to the older "mysql" extension.
          if (extension_loaded('mysqli')) {
              $CFG->dbtype = 'mysqli';
          }
          else {
              $CFG->dbtype = 'mysql';
          }
      }

  I replace this with:

      // Transform $CFG->dbtype into the name of the ADODB driver we will use
      if (is_postgres()) {
          $CFG->dbtype = 'postgres7';
      }
      else if (is_mysql()) {
          // If they have mysqli, use it. Otherwise, fall back to the older "mysql" extension.
          //if (extension_loaded('mysqli')) {
          //    $CFG->dbtype = 'mysqli';
          //}
          //else {
          //    $CFG->dbtype = 'mysql';
          //}
          $CFG->dbtype = 'mysql';
      }

  I also receive the error:

  The mysqli PHP extension is not installed on your server. Thus, Mahara
  is falling back to the deprecated original mysql PHP extension. We
  recommend installing mysqli. Trouble is that fallback doesn't seem to
  be working at all.

  Fact is mysqli is  included with php5-mysql in ubuntu. Mahara doesn't
  seem to see that. Maybe the code that is suppose to detect that in
  init.php blocks connection to the server, stopping mahara from running
  at all.

  This does not happen in 1.7.x.

To manage notifications about this bug go to:
https://bugs.launchpad.net/mahara/+bug/1247715/+subscriptions


References