How To Recreate The Horde Database In Plesk 8x - 9x

This article explains how to recreate a damaged or corrupted Horde database for both Plesk 8x and 9x. Please note that this requires you to have an understanding of SSH and MySQL, as this will all need to be done via SSH command line. Should you have any questions regarding this, please contact Hosting.com / Hostmysite.com support.

  1. Since the database is either corrupted or damage, you will need to remove the existing database. To do this you will need to log into the Mysql instance and remove the database. To do this, type the following command

  2. "drop horde;"

  3. Now you will have to create the horde database.

  4. "create database horde;"

  5. With the database created, you can enter the database.

  6. "use horde;"

  7. Now that you are in the horde database, running the script below will populate the horde database. Please be sure you copy the entire command and paste it in the mysql command line and then press enter.

  8. CREATE TABLE horde_users (
    user_uid VARCHAR(255) NOT NULL,
    user_pass VARCHAR(255) NOT NULL,
    user_soft_expiration_date INT,
    user_hard_expiration_date INT,

    PRIMARY KEY (user_uid)
    );

    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_users TO horde@localhost;

    CREATE TABLE horde_prefs (
    pref_uid VARCHAR(200) NOT NULL,
    pref_scope VARCHAR(16) NOT NULL DEFAULT '',
    pref_name VARCHAR(32) NOT NULL,
    pref_value LONGTEXT NULL,

    PRIMARY KEY (pref_uid, pref_scope, pref_name)
    );

    CREATE INDEX pref_uid_idx ON horde_prefs (pref_uid);
    CREATE INDEX pref_scope_idx ON horde_prefs (pref_scope);
    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_prefs TO horde@localhost;

    CREATE TABLE horde_datatree (
    datatree_id INT NOT NULL,
    group_uid VARCHAR(255) NOT NULL,
    user_uid VARCHAR(255) NOT NULL,
    datatree_name VARCHAR(255) NOT NULL,
    datatree_parents VARCHAR(255) NOT NULL,
    datatree_order INT,
    datatree_data TEXT,
    datatree_serialized SMALLINT DEFAULT 0 NOT NULL,

    PRIMARY KEY (datatree_id)
    );

    CREATE INDEX datatree_datatree_name_idx ON horde_datatree (datatree_name);
    CREATE INDEX datatree_group_idx ON horde_datatree (group_uid);
    CREATE INDEX datatree_user_idx ON horde_datatree (user_uid);
    CREATE INDEX datatree_serialized_idx ON horde_datatree (datatree_serialized);

    CREATE TABLE horde_datatree_attributes (
    datatree_id INT NOT NULL,
    attribute_name VARCHAR(255) NOT NULL,
    attribute_key VARCHAR(255) DEFAULT '' NOT NULL,
    attribute_value TEXT
    );

    CREATE INDEX datatree_attribute_idx ON horde_datatree_attributes (datatree_id);
    CREATE INDEX datatree_attribute_name_idx ON horde_datatree_attributes (attribute_name);
    CREATE INDEX datatree_attribute_key_idx ON horde_datatree_attributes (attribute_key);

    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_datatree TO horde@localhost;
    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_datatree_attributes TO horde@localhost;

    CREATE TABLE horde_tokens (
    token_address VARCHAR(100) NOT NULL,
    token_id VARCHAR(32) NOT NULL,
    token_timestamp BIGINT NOT NULL,

    PRIMARY KEY (token_address, token_id)
    );

    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_tokens TO horde@localhost;

    CREATE TABLE horde_vfs (
    vfs_id BIGINT NOT NULL,
    vfs_type SMALLINT NOT NULL,
    vfs_path VARCHAR(255) NOT NULL,
    vfs_name VARCHAR(255) NOT NULL,
    vfs_modified BIGINT NOT NULL,
    vfs_owner VARCHAR(255) NOT NULL,
    vfs_data LONGBLOB,

    PRIMARY KEY (vfs_id)
    );

    CREATE INDEX vfs_path_idx ON horde_vfs (vfs_path);
    CREATE INDEX vfs_name_idx ON horde_vfs (vfs_name);

    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_vfs TO horde@localhost;

    CREATE TABLE horde_histories (
    history_id BIGINT NOT NULL,
    object_uid VARCHAR(255) NOT NULL,
    history_action VARCHAR(32) NOT NULL,
    history_ts BIGINT NOT NULL,
    history_desc TEXT,
    history_who VARCHAR(255),
    history_extra TEXT,

    PRIMARY KEY (history_id)
    );

    CREATE TABLE horde_histories_seq (
    id int(10) unsigned NOT NULL auto_increment,
    PRIMARY KEY (id)
    );

    CREATE TABLE horde_datatree_seq (
    id int(10) unsigned NOT NULL auto_increment,
    PRIMARY KEY (id)
    );


    CREATE INDEX history_action_idx ON horde_histories (history_action);
    CREATE INDEX history_ts_idx ON horde_histories (history_ts);
    CREATE INDEX history_uid_idx ON horde_histories (object_uid);

    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_histories TO horde@localhost;
    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_histories_seq TO horde@localhost;
    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_datatree_seq TO horde@localhost;

    CREATE TABLE horde_sessionhandler (
    session_id VARCHAR(32) NOT NULL,
    session_lastmodified INT NOT NULL,
    session_data LONGBLOB,

    PRIMARY KEY (session_id)
    ) ENGINE = InnoDB;

    GRANT SELECT, INSERT, UPDATE, DELETE ON horde_sessionhandler TO horde@localhost;

    FLUSH PRIVILEGES;

     

  9. Once the command is ran, the entire horde database is now populated and horde can be accessed.