Question:
Unable to access Horde webmail or rename a domain in Plesk: Table 'horde.table_name' doesn't exist
Symptoms
- It is not possible to access Horde webmail or open specific menus in webmail with one of the following error messages:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'horde.horde_prefs' doesn't exist
Server error when querying database.
A fatal error has occurred Could not instantiate PDO. PDOException: SQLSTATE[HY000] [1049] Unknown database 'horde'
- In Plesk, it is not possible to remove/rename an email account or rename a domain with the error message:
DB query failed: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'horde.TABLE_NAME' doesn't exist, query was:
Cause
The database of Horde webmail is missing or corrupted.
Resolution
Note: If Horde webmail is not required on the server and another webmail is being used server-wide (Roundcube/MailEnable), remove the Horde component from the server.
For Plesk on Linux
1.Connect to the Plesk server via SSH.
2.For security reasons, create a copy of the /var/lib/mysql/horde directory:
#cp -r /var/lib/mysql/horde /root/
3.Empty the /var/lib/mysql/horde directory:
#rm -rf /var/lib/mysql/horde
4.Drop the 'horde' database:
#plesk db "drop database horde"
- If you get the message below, ignore it and move to step 4:
CONFIG_TEXT: ERROR 1008 (HY000) at line 1: Can't drop database 'horde'; database doesn't exist
5.Switch to the directory with daily dumps:
#cd /var/lib/psa/dumps
6.Find the most recent dump that contains the 'horde' database:
#zgrep "Current Database:" mysql.daily* | grep horde
mysql.daily.dump.0.gz:-- Current Database: `horde`
mysql.daily.dump.1.gz:-- Current Database: `horde`
mysql.daily.dump.2.gz:-- Current Database: `horde`
- where mysql.daily.dump.0.gz is the most recent daily dump.
7.Restore the 'horde' database from the most recent daily dump. In this example, the 'horde' database is restored from mysql.daily.dump.0.gz:
#zcat mysql.daily.dump.0.gz | sed -n '/-- Current Database: `horde`/,/-- Current Database:*/p' | MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin