← Back to team overview

mahara-contributors team mailing list archive

[Bug 1187964] Re: Use adodb "mysqli" instead of "mysql"

 

The way I finally decided to implement this is as follows:

1. I changed the preferred dbtype in config-dist.php to "postgres" or
"mysql" (we already had code that was transforming the "postgres8" and
"mysql5" into other strings to match the ADODB driver, so I figured that
if we're doing that, we may as well make the starting point strings be
clean and sensible.) The older "postgres8" and "mysql5" values are still
accepted for backwards-compatibility.

2. If you enter "mysql" as your dbtype, Mahara checks for the presence
of mysqli and uses that as your driver if it is present. If not, it uses
the older mysql driver.

3. If it falls back to the older mysql driver, it shows you a warning on
the admin screen indicating that you're using the older mysql PHP
extension and recommends that you install the mysqli PHP extension.

This way, everyone who has the mysqli extension gets silently upgraded
to it without having to take any action, and those who don't have it can
continue to use the site but get a warning recommending them to upgrade.

** Changed in: mahara
       Status: Triaged => Confirmed

** Changed in: mahara
     Assignee: (unassigned) => Aaron Wells (u-aaronw)

-- 
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/1187964

Title:
  Use adodb "mysqli" instead of "mysql"

Status in Mahara ePortfolio:
  Confirmed

Bug description:
  Mahara is currently using the adodb "mysql" driver for MySQL
  connections. This is based on an older PHP library which is no longer
  in active development and lacks certain features, most notably
  transactions (see for instance
  https://mahara.org/interaction/forum/topic.php?id=5434 ).

  We should probably switch to the adodb "mysqli" driver, which is built
  on the newer mysqli PHP library and *does* support transactions.

  There are two ways we could go about this gracefully:

  1. When a user supplies the string "mysql5" in their config.php file,
  we could silently interpret this to mean that they want to use the
  "mysqli" driver. (We could alternately provide some other way to
  indicate they want to use the older "mysql" library if we really want
  to support it.)

  2. OR, we could show the admin a warning message after they
  upgrade/install, which tells them they should really change the
  "mysql5" in their config.php to "mysqli".

  I support option #1. Given that we only support mysql and postgres,
  there's no reason we shouldn't abstract away the connection between
  config.php and the name of the underlying adodb driver. (For that
  matter, we should probably change the recommended dbtypes from
  "mysql5" and "postgres8" to just "mysql" and "postgres").

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


References