WordPress Table Comparison between Free Version and Paid-for Pro Version

Is there any database table structure or data content difference between the free version and the pro version?

I am planing to migrate a site from free to pro as follows:

Step 1 - copy all WP tables from Free LIVE site to separate Free DEV site
Step 2 - upgrade Free DEV site to paid-for Pro DEV site
Step 3 - do my testing and tweaking
Step 4 - once I am ready to make the final cutover, I will:
Step 4a - shutdown the Free LIVE site so subscribers cannot login and new subscribers cannot register
Step 4b - copy all WP tables from Free LIVE site to new paid-for Pro DEV site once more (this is where I am concerned of any migration issues)
Step 4c - make the Pro DEV site the new Pro LIVE site

Will I experience any issues with the approach?

The answer is that you will almost certainly not have any problems. The Pro version doesn’t change the underlying structure of the free version; it just adds more functionality.

But I am wondering what it is that you would want to reimport from the free site. If it’s just members’ details, s2Member actually has specific export/import functions that would make this process much simpler.

Thank you @KTS915.

First, the reason for the “reimport” is that once I do the first import and work on the DEV Site, new members may register or existing members may login (to the LIVE site) and change their profile or password etc., So I need to be able to recapture subscriber profiles after I am ready to launch the DEV site…

Second, you mention s2Member has “easy to use” import and export. Where exactly is that located and how do I use it?

It’s a Pro feature, located in a section called Import/Export. As to how to use it, see https://s2member.com/kb-article/importingupdating-users/ and https://s2member.com/kb-article/advanced-importexport-tools/

It sounds like this is all you need, rather than attempting to reimport tables.

@Franco13 Another explanation

Not sure I feel this will all work.

Here’s my configuration:

(please read by visualizing a period for " [dot] " – the forum posting moderator yelled at me that I can only post 2 links because I am a new user – go figure…)

s2Member FREE is running on www [dot] myclientsite [dot] com (the LIVE site)
WP is v4.7 and all plugins are up-to-date

s2Member Free is running on dev [dot] myclientsite [dot] com (current DEV site)
WP is v4.7 and all plugins are up-to-date

I am manually moving the custom theme, all uploads/* files, and each of the MySQL tables from LIVE to DEV
I then will upgrade DEV FREE to PRO
I need to test it and make some tweaks to the site’s pages etc.

The I need to move the LIVE site MySQL tables to the DEV site right before I am ready to go-live. Then I will make www [dot] myclientsite [dot] com --> old [dot] myclientsite [dot] com and immediately thereafter I will make dev [dot] myclientsite [dot] com --> www [dot] myclientsite [dot] com

So the Import and Export will not be available to me in the www [dot] myclientsite [dot] com LIVE site as it is running FREE

But this does bring up one question…once I upgrade dev [dot] myclientsite [dot] com to PRO will I be able to change it to www [dot] myclientsite [dot] com under the same paid-for license (or however WP Sharks check that I can run the PRO version)?

You will certainly be able to add the Pro version of s2Member to your dev site, and thus be able to accomplish the export/import that you want, irrespective of which Pro site license you have.

Whether you would be able to update the dev site to the next version of s2Member would depend on whether you have the single-site or unlimited site license. If you aren’t going to be using that dev site in the future, then that issue would be irrelevant.

Thank you for the quick response @KTS915 - Tim!

(1) I guess I don’t understand the export/import process. If I am running my LIVE site on the Free version, then how do I export it? It sounded like Export/Import is only available on the PRO version.

(2) I have “www.” running live site right now with the free version. “dev.” will go from Free to Pro. Then I plan to switch the subdomain from “dev.” to “www.”. I won’t need dev. after that.

So can I simply purchase the single site license for my conversion/migration?

Frank, yes, the single site license will work for what you want. Just install the Pro version on the dev site and do the export, then install it on the live site and do the import. Check the import works and then delete the Pro version from the dev site.

You won’t be running two sites, just moving data, so you would be complying with the expectations of the s2Member devs.

Ok, thanks @KTS915 .

The export/import will not work I feel. I neglected to really spell out the environment exactly.

The LIVE site is running WP Standalone. The DEV site is in my WordPress Multisite Network.

So it is more of a migration project as follows:

  1. move LIVE to DEV
  2. upgrade DEV s2Free to DEV s2Pro
  3. tweak and test DEV
  4. when ready to launch,
    4a. quickly rename the subdomain www. to hold. in standalone
    4b. quickly rename the subdomain dev. to www. in WPMSN

So the LIVE site essentially runs from WPMSN…I know how to handle the subdomain renames along with all the pertinent places in the MySQL tables that need the URL found and replaced. I’ve done this part of the task many times before…

I am still having trouble copying the WP Tables from my standalone install to my Multisite install prior to upgrading @KTS915 . I can copy everything okay but the PayPal “Paid Subscr. ID”, “# Of Logins” and “Last Login Time” data is not showing up in the user’s admin panel in WordPress. So I fear that I am losing the ability for the recurring payments to come through PayPal.

So I am wondering how best to go about this.

Can I / Should I follow this process:

Step 1: upgrade my s2member standalone version to Pro
Step 2: somehow copy the upgraded Pro version to WP Multisite through your export/import?

If so, how exactly do I do this? Are there specific steps I can go through to migrate from a free standalone installation to a paid for multisite installation?

Frank, I have already suggested how I’d do it. Even though you evidently doubt it, I stand by that suggestion.

Thank you @KTS915. So to confirm the approach:

  1. upgrade s2Member Free standalone on www.example.com to s2Member Pro by paying for Pro and uploading & installing the paid for “.zip file” to my server
  2. upload the same zip file to my s2Member Free multisite site copy on dev.example.com so it becomes Pro too
  3. do an s2Member export on standalone on www.example.com
  4. do an s2Member import on multisite on dev.example.com

That is all it takes?

More or less, yes. You might need to tweak it a little as explained by Krum here, but that should do it.

Ok, I am sweating this one but I’ll give it a shot.

I purchased PRO and installed on Live site and Dev site. I Exported on Live site per documented instructions and attempted to Import on Dev site. The Export/Import feature did not work @KTS915 . Here’s the error message:

Operation complete. Users/Members imported: 0.
The following errors were encountered during importation:
Line #1. User ID# 2 does NOT belong to an existing User.
Line #2. User ID# 5 does NOT belong to an existing User.
Line #3. User ID# 8 does NOT belong to an existing User.
Line #4. User ID# 153 does NOT belong to an existing User.
Line #5. User ID# 166 does NOT belong to an existing User.
Line #6. User ID# 207 does NOT belong to an existing User.
Line #7. User ID# 296 does NOT belong to an existing User.
Line #8. User ID# 299 does NOT belong to an existing User.
Line #9. User ID# 300 does NOT belong to an existing User.
Line #10. User ID# 301 does NOT belong to an existing User.
Line #11. User ID# 302 does NOT belong to an existing User.
Line #12. User ID# 306 does NOT belong to an existing User.
Line #13. User ID# 315 does NOT belong to an existing User.

Line #760. User ID# 1980 does NOT belong to an existing User.

So what I needed to do what fall back to my phpMyAdmin manual migration of wp_users and wp_usermeta to get them into the Dev Site’s user tables. Yet, the export/import still did not work.

-- WordPress CORE Common;
-- copies live_wordpress.wp_usermeta to dev_wordpress.wp_usermeta;
USE live_wordpress;
OPTIMIZE TABLE wp_usermeta;
DROP TABLE IF EXISTS wp_usermeta_source;
CREATE TABLE wp_usermeta_source LIKE wp_usermeta;
INSERT INTO wp_usermeta_source SELECT * FROM wp_usermeta;
SET @count = 466;
UPDATE wp_usermeta_source SET umeta_id = @count:= @count + 1;
ALTER TABLE wp_usermeta_source AUTO_INCREMENT=467;
UPDATE wp_usermeta_source SET meta_key = "wp_22_capabilities" WHERE meta_key = "wp_capabilities";
UPDATE wp_usermeta_source SET meta_key = "wp_22_dashboard_quick_press_last_post_id" WHERE meta_key = "wp_dashboard_quick_press_last_post_id";
UPDATE wp_usermeta_source SET meta_key = "wp_22_user_level" WHERE meta_key = "wp_user_level";
UPDATE wp_usermeta_source SET meta_key = "wp_22_user-settings" WHERE meta_key = "wp_user-settings";
UPDATE wp_usermeta_source SET meta_key = "wp_22_user-settings-time" WHERE meta_key = "wp_user-settings-time";
INSERT INTO wp_usermeta_source ( user_id, meta_key, meta_value ) SELECT ID, "source_domain", "dev.smithonstocks.com" FROM wp_users;
INSERT INTO wp_usermeta_source ( user_id, meta_key, meta_value ) SELECT ID, "wp_user_avatar", "" FROM wp_users;
INSERT INTO wp_usermeta_source ( user_id, meta_key, meta_value ) SELECT ID, "wp_22_user_avatar", "" FROM wp_users;
USE dev_wordpress;
DROP TABLE IF EXISTS wp_usermeta_BACKUP;
CREATE TABLE wp_usermeta_BACKUP LIKE wp_usermeta;
INSERT INTO wp_usermeta_BACKUP SELECT * FROM wp_usermeta;
DELETE FROM wp_usermeta WHERE (user_id="2" OR user_id="5" OR user_id="8" OR user_id>"12");
ALTER TABLE wp_usermeta AUTO_INCREMENT=1;
INSERT INTO wp_usermeta SELECT * FROM live_wordpress.wp_usermeta_source;
ALTER TABLE wp_usermeta AUTO_INCREMENT=1;
OPTIMIZE TABLE wp_usermeta;
USE live_wordpress;
DROP TABLE IF EXISTS wp_usermeta_source;

-- copies live_wordpress.wp_users to dev_wordpress.wp_users;
USE live_wordpress;
OPTIMIZE TABLE wp_users;
DROP TABLE IF EXISTS wp_users_source;
CREATE TABLE wp_users_source LIKE wp_users;
INSERT INTO wp_users_source SELECT * FROM wp_users;
ALTER TABLE wp_users_source ADD COLUMN spam TINYINT(2) NOT NULL, ADD COLUMN deleted TINYINT(2) NOT NULL AFTER display_name;
USE dev_wordpress;
DROP TABLE IF EXISTS wp_users_BACKUP;
CREATE TABLE wp_users_BACKUP LIKE wp_users;
INSERT INTO wp_users_BACKUP SELECT * FROM wp_users;
DELETE FROM wp_users WHERE (ID="2" OR ID="5" OR ID="8" OR ID>"12");
ALTER TABLE wp_users AUTO_INCREMENT=1;
INSERT INTO wp_users SELECT * FROM live_wordpress.wp_users_source;
OPTIMIZE TABLE wp_users;
USE live_wordpress;
DROP TABLE IF EXISTS wp_users_source;

-- END WordPress CORE Common;

Also

(1) notice the difference in user roles from the Live Site to the Dev Site. And notice that none of the meta data comes over, especially the PayPal reference “Paid Subscr. ID” data.

Live Site Screen Shot

Dev Site Screen Shot (see next thread item…I’m a new user and can only post 1 pic at a time :frowning:

Dev Site Screen Shot

Ok, I solved the discrepancy in the User Roles…wp_options table on Live Site and wp_22_options on Multisite (ID=“22”) Dev Site needed to have the option_name value of wp_user_roles and wp_backup_user_roles changed to include the multisite id as follows:
wp_22_user_roles and wp_22_backup_user_roles

Here’s my phpMyAdmin code for the OPTIONS table if anyone is tracking this thread:
– copies live_wordpress.wp_options to dev_wordpress.wp_22_options;
USE live_wordpress;
OPTIMIZE TABLE wp_options;
USE dev_wordpress;
DROP TABLE IF EXISTS wp_22_options;
CREATE TABLE wp_22_options LIKE live_wordpress.wp_options;
INSERT INTO wp_22_options SELECT * FROM live_wordpress.wp_options;
– finds & replaces;
UPDATE wp_22_options SET option_value = REPLACE(option_value, ‘https://example.com’, ‘https://dev.example.com’) WHERE option_value LIKE ‘https://example.com’;
UPDATE wp_22_options SET option_name = REPLACE(option_name, ‘wp_user_roles’, ‘wp_22_user_roles’) WHERE option_name = ‘wp_user_roles’;
UPDATE wp_22_options SET option_name = REPLACE(option_name, ‘wp_backup_user_roles’, ‘wp_22_backup_user_roles’) WHERE option_name = ‘wp_backup_user_roles’;
– END finds & replaces;
OPTIMIZE TABLE wp_22_options;

Now all I need to do now is figure out how to export/import my s2Member Users (with their meta) to Multisite.

Please note that since I am a new user I have “You have reached the reply limit for this topic”…so I’ll be adding any comments or notes right here:

You should say “The Export/Import feature did not work as expected”, and will be right. If you want to “import” new users, you must set them in the CSV file without ID. If you set ID, they will be “replaced”, and since there is no such users, s2M gives you an error message to think about…

Yes, I see that @krumch. That is how/why I was able to export/import as a “replacement” after I manually copied over the user records via my phpMyAdmin MySQL query.

Now all we need to figure out is how to get the s2Member and WordPress User Meta to export and import to meet my expectations :slight_smile: