Your database is out of date, please make sure to upgrade

Please bear with me, I’m all a bit new to this.

I’d been using an extremely old build of phplist but when my host said Should upgrade PHP from 5.5 to 7, it broke PHPList.

I manually downloaded and installed the latest version, copied my old config file across etc, and can now access the interface, so I know it’s worked.

However at the top of the homepage it says;

error: Your database is out of date, please make sure to upgrade
Your version : 2.10.19
phplist version : 3.4.8

with an option below that to upgrade. When I click that I’m told;

Upgrade phpList

Your database version: 2.10.19

fatalerror: Your version is older than 3.2.0 and cannot be upgraded to this version. Please upgrade to 3.2.0 first and then try again.

If I ignore than and try and start a new campaign it tells me;

fatalerror: Unable to create campaign, did you forget to upgrade the database?

My question is this. I’ve updated PHP on my host. I’ve updated to the most recent PHPList build. What exactly is it asking me to update and how do I do so? I thought by upgrading PHP version on my host it would have taken care of out of date database tables?

You were using a VERY old version of phpList, ie: 2.x.x you cannot simply update directly to the current version.
You’ll need to find phpList 3.2.0 and update from 2.x.x to this, then you should be able to update from 3.2.0 to 3.4.8

DO make sure to back up your database before you start updating so as not to lose your data.

Thanks for the advice. Do I do that the same way I updated 2.x.x, by literally downloading and copying the files (and replacing the config file)?

You can do it that way, or install it to a fresh directory, and use the original config file.

I’ve done that, replaced config.php with my existing config file, and it just loads a blank page (have tried two browsers). Am I doing something else wrong?

There changes in the config file over time.
It might be best to migrate your settings from the very old config file into the config file in the new install. In particular, there’s a setting that should be changed to look like this:

// select the database module to use
// anyone wanting to submit other database modules is
// very welcome!
$database_module = ‘mysqli.inc’;

(from mysql.inc to mysqli.inc)

There are also a couple of database conversions that need to occur along the way, so it’s good to do the multi-step upgrade… the way the links and clicks and bounces were handled has changed since version 2. The database upgrades are ‘cumulative’, so from 2.x to 3.x there were some changes, and from 3.x to 3.y there were more changes. As I recall, the database upgrade scripts do not go from 2.x to 3.y (in my example)

Thanks again.

I’ve changed the database_module value too, no joy there either.

I removed 3.4.9 and installed 3.2.0. Are there either version between them I should be moving up between.

Even then, to refer to my original question, that’s just upgrading PHPlist versions, it’s not upgrading the database itself, which is what it’s telling me to do.

Once you’ve installed 3.2.0 you should be seeing a link to update the database as I recall (My host server just gives me a link to update phpList automatically these days).

Once you’ve got 3.2.0 running you can update direct to 3.4.9 as far as I know, but you may want to make a database backup prior to updating anyway.

That’s what I was counting on, but as I said after I installed 3.2.0 and went to domain.com/lists/admin to log in it gave me a blank page. When I went to the page source it hadn’t pulled any content or code at all.

Is there something else I’m supposed to do with the config.php file when I replace it with my old/existing one (apart from that $database_module = “mysqli.inc”; thing)?

No other thoughts on this?

Hi @drew,
in terms of the specifics of upgrading your database, it is possible to do that using something like phpAdmin to run manual commands on the database itself.

If you want to see what the commands are, you can look in the file ~/lists/admin/upgrade.php

Scrolling through the file, you can see all of the commands that might occur.

Dan