Use adodb "mysqli" instead of "mysql"

Bug #1187964 reported by Aaron Wells
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mahara
Fix Released
Medium
Aaron Wells

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").

Aaron Wells (u-aaronw)
Changed in mahara:
milestone: none → 1.8.0rc1
importance: Undecided → Medium
status: New → Triaged
description: updated
Aaron Wells (u-aaronw)
tags: added: adodb dmllib
Aaron Wells (u-aaronw)
tags: added: mysql
Revision history for this message
Aaron Wells (u-aaronw) wrote :
Revision history for this message
Aaron Wells (u-aaronw) wrote :

Testing instructions:

Just use the site, in postgres and mysql. Use it intensively. Do a clean install. You can also test the warning messages by uninstalling the PHP mysql and/or mysqli extensions. In Ubuntu, these are both instaled via the same package, php5-mysql, but you can disable mysqli by commenting out the line "extension=mysqli.so" in /etc/php5/apache2/conf.d/mysqli.ini

Revision history for this message
Aaron Wells (u-aaronw) wrote :

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
assignee: nobody → Aaron Wells (u-aaronw)
Revision history for this message
Mahara Bot (dev-mahara) wrote : A change has been merged

Reviewed: https://reviews.mahara.org/2477
Committed: http://gitorious.org/mahara/mahara/commit/ac9e5527b3071447d6ee49ec2420f71f901dd167
Submitter: Aaron Wells (<email address hidden>)
Branch: master

commit ac9e5527b3071447d6ee49ec2420f71f901dd167
Author: Aaron Wells <email address hidden>
Date: Thu Sep 5 18:26:55 2013 +1200

Upgrade our ADODB driver from the long-obsolete mysql driver to the actively developed mysqli driver

Bug 1187964: The biggest improvement is that the ADODB mysqli driver actually supports transactions!

Change-Id: I8e55ea28cd6e6b8ed5c883646c1172d318af5554

Aaron Wells (u-aaronw)
Changed in mahara:
status: Confirmed → Fix Committed
Aaron Wells (u-aaronw)
Changed in mahara:
milestone: 1.8rc1 → 1.8.0
Aaron Wells (u-aaronw)
Changed in mahara:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.