Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In with Google Sign In with OpenID

Updating members app breaks it for SQLite

With a fresh install, the admin menu shows "Members (click to upgrade)". However, upgrading an SQLite database executes an older user table definition (lines 61-72 of apps/user/handlers/upgrade.php) that lacks the phone, fax, address, etc. fields.

Comments

  • Thanks for catching that. Just pushed a fix for this too.

  • Just upgraded a site via git pull origin master. I got the "Accounts (click to upgrade)" message and upgrading happened without error. However, when I click on Accounts in the admin menu the query on line 21 of apps/user/handlers/admin.php fails with the message "no such column: company".

    This is another SQLite site.

  • Hmm, I guess I didn't quite fix that right.

    Do you know what version you were updating from? And can you let me know what fields you currently have in the user table? The DB Manager app might be helpful there.

  • It was 1.3.10, so when I tried elefant update from the command line it said it couldn't update because it was already the current version.

    sqlite> .schema elefant_user
    CREATE TABLE elefant_user (
                        id integer primary key,
                        email char(72) unique not null,
                        password char(128) not null,
                        session_id char(32) unique,
                        expires datetime not null,
                        name char(72) not null,
                        type char(32) not null,
                        signed_up datetime not null,
                        updated datetime not null,
                        userdata text not null
                );
    
  • It looks like it didn't fire these upgrade scripts:

    • apps/user/conf/upgrade_1.1.3_sqlite.sql
    • apps/user/conf/upgrade_1.1.4_sqlite.sql
    • apps/user/conf/upgrade_1.1.5_sqlite.sql

    You should be able to import via ./elefant import-db apps/user/conf/upgrade_1.1.3_sqlite.sql

    Let me know if that fixes it for you.

  • Does 1.1.3 correspond to the version of elefant being upgraded? If so, it's odd I need it because this site was initially created in 1.3.10.

    Anyways, the upgrade worked, with a couple of hiccups. Trying the command you wrote gave this error: "PHP Warning: escapeshellarg() has been disabled for security reasons." However, editing the sql to replace "#prefix#" with my actual prefix and running it from within sqlite3 worked.

  • Ah yes, I forget some systems disable those commands.

    The apps have their own versions, since each app has an upgrade script that will make any necessary database changes (or as you've just experienced, is supposed to...).

    I realized though that unlike the ./elefant update command, which goes through each in-between version and applies those updates, the app upgrade scripts don't update in-between versions if you're updating between several versions. Usually not a problem, but something I definitely need to fix.

  • sqlite3 didn't like the command in apps/user/conf/upgrade_1.1.5_sqlite.sql (syntax error, I think because of after phone); removing after phone added the fax column successfully.

  • Ah yes, you're right. I just removed the 'after phone', I don't think the order of the fields is that important.

Sign In or Register to comment.