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
adminand the contents of the
/etc/psa/.psa.shadowfile, 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
kronolithupgrade 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