After upgrading to Plesk 9.5, some Horde webmail functionality may be broken (for example, the address book or calendar).
/var/log/psa-horde/psa-horde.log Horde log contains the following errors:
May 04 21:09:41 HORDE [error] [turba] DB Error: no such field: SELECT object_id, owner_id, object_type, object_members, object_uid, object_firstname, object_lastname, object\\_middlenames, object\\_nameprefix, object\\_namesuffix, object\\_alias, object\\_bday, object\\_homestreet, object\\_homepob, object\\_homecity, object\\_homeprovince, object\\_homepostalcode, object\\_homecountry, object\\_workstreet, object\\_workpob, object\\_workcity, object\\_workprovince, object\\_workpostalcode, object\\_workcountry, object\\_tz, object\\_email, object\\_homephone, object\\_workphone, object\\_cellphone, object\\_fax, object\\_pager, object\\_title, object\\_role, object\\_company, object\\_category, object\\_notes, object\\_url, object\\_freebusyurl, object\\_pgppublickey, object\\_smimepublickey FROM turba\\_objects WHERE (owner\\_id = 'firstname.lastname@example.org' AND (((LOWER(object\\_nameprefix) LIKE LOWER('pa%') OR LOWER(object\\_nameprefix) LIKE LOWER('% pa%')) OR (LOWER(object\\_firstname) LIKE LOWER('pa%') OR LOWER(object\\_firstname) LIKE LOWER('% pa%')) OR (LOWER(object\\_middlenames) LIKE LOWER('pa%') OR LOWER(object\\_middlenames) LIKE LOWER('% pa%')) OR (LOWER(object\\_lastname) LIKE LOWER('pa%') OR LOWER(object\\_lastname) LIKE LOWER('% pa%')) OR (LOWER(object\\_namesuffix) LIKE LOWER('pa%') OR LOWER(object\\_namesuffix) LIKE LOWER('% pa%'))))) [nativecode=1054 \\*\\* Unknown column 'object\\_firstname' in 'field list'] [pid 3258 on line 173 of "/usr/share/psa-horde/turba/lib/Driver/sql.php"]
May 05 00:39:37 HORDE [error] [kronolith] DB Error: no such field: SELECT event\\_id, event\\_uid, event\\_description, event\\_location, event\\_private, event\\_status, event\\_attendees, event\\_keywords, event\\_title, event\\_category, event\\_recurcount, event\\_recurtype, event\\_recurenddate, event\\_recurinterval, event\\_recurdays, event\\_start, event\\_end, event\\_alarm, event\\_modified, event\\_exceptions, event\\_creator\\_id FROM kronolith\\_events WHERE calendar\\_id = 'email@example.com' AND event\\_alarm > 0 AND ((event\\_end >= '2010-05-05 00:00:00') OR (event\\_recurenddate >= '2010-05-05 00:00:00' AND event\\_recurtype <> 0)) [nativecode=1054 \\*\\* Unknown column 'event\\_private' in 'field list'] [pid 3134 on line 323 of "/usr/share/psa-horde/kronolith/lib/Driver/sql.php"]
For the specified example, the following Horde components are affected: kronolith (calendar) and turba (address books).
It is possible to fix the issue by a re-upgrade of the components using Horde scripts:
Locate the upgrade scripts at
/usr/share/psa-horde/. For this example, the folders with the upgrade scripts are
Create a dump of the Horde database in case of an emergency:
# MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqldump -uadmin --quote-names --databases horde > /root/horde.sql``
turba_objectstable in the Horde database:
Open the upgrade script in an editor:
# vi /usr/share/psa-horde/turba/scripts/upgrades/2.1_to_2.2_sql_schema.php
Find the database configuration variables
$dbpass . Set them to
admin and the contents of the
/etc/psa/.psa.shadow file, respectively. It is important to use the MySQL superuser's privileges, since the privileges of the "horde" user are not sufficient to upgrade tables.
- Save the script and execute it with the following command:
# php -d include_path=".:/usr/share/psa-pear" /usr/share/psa-horde/turba/scripts/upgrades/2.1_to_2.2_sql_schema.php`
It will not execute any upgrade; however, it will run a test run of the upgrade. If no errors appear (such as "unable to open file"), then open the script again, find the variable
$for_real , and change its value to
true . After that, run the upgrade script again.
- Run the kronolith upgrade:
# mysql horde -uadmin -p`cat /etc/psa/.psa.shadow` < /usr/share/psa-horde/kronolith/scripts/upgrades/2.2_to_2.3.sql
If you get something like:
ERROR 1146 (42S02) at line 1: Table 'horde.kronolith_shares' doesn't exist
kronolith upgrade should be run from version 2.1 to 2.2, and then from schema 2.2 to 2.3. The upgrade "sql" queries are in the same folder
# MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin horde < /usr/share/psa-horde/kronolith/scripts/upgrades/2.1_to_2.2.sql
# MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin horde < /usr/share/psa-horde/kronolith/scripts/upgrades/2.2_to_2.3.sql
After that, you should be able to use the Horde address book and calendar without errors.
- That should be enough. However, if the upgrade goes wrong, you can simply restore the
horde.sqlfile that was saved prior to starting the upgrade procedure:
# MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin horde< /root/horde.sql