Symptoms
Accessing Roundcube webmail returns an error message, either stating "Oops... something went wrong" or "The page isn't redirecting properly"
A few different variations of the error can be seen.
CONFIG_TEXT: Oops... something went wrong
An internal error has occurred. Your request cannot be processed at this time.
In the logs/roundcube/errors.log file, the following message appears:
CONFIG_TEXT: DB Error: [1] error in view caldav_calendars_merged:
no such table: main.caldav_calendars
(SQL Query: ALTER TABLE carddav_addressbooks_X RENAME TO carddav_addressbooks)
Another variant of this error can be seen as:
CONFIG_TEXT: DB Error: [1] error in view caldav_calendars_merged:
no such table: main.caldav_calendars
(SQL Query: ALTER TABLE carddav_groups2 RENAME TO carddav_groups)
Cause
Recent cPanel updates apply changes to the Roundcube database. Some updates applied by the CardDav plugin conflict with updates to the Roundcube SQLite schema, causing table updates to fail for some users.
Resolution
Update: The issue has been fixed in the following versions, but the workaround may still be needed if the SQLite databases were unable to update before the update was released.
- 126.0.1
- 124.0.1
- 122.0.17
- 120.0.22
Drop the view in question to allow the update to be processed.
Note: replace "user" with the cPanel username in the file path, "email" with the email username in the email.rcube.db filename, and "domain.tld' with the domain the affected email belongs to.
Drop the view if it exists.
CONFIG_TEXT: /usr/bin/sqlite3 /home/user/etc/domain.tld/email.rcube.db "DROP VIEW IF EXISTS caldav_calendars_merged"
Rename the leftover table to the new name.
CONFIG_TEXT: /usr/bin/sqlite3 /home/user/etc/domain.tld/email.rcube.db "ALTER TABLE carddav_addressbooks_X RENAME TO carddav_addressbooks;"
Drop the view for multiple users.
CONFIG_TEXT: find /home*//etc -name ".rcube.db" -exec sh -c '/usr/bin/sqlite3 $1 "DROP VIEW IF EXISTS caldav_calendars_merged"' sh {} ;
Rename the leftover table to the new name for multiple users.
CONFIG_TEXT: find /home*//etc -name ".rcube.db" -exec sh -c '/usr/bin/sqlite3 $1 "ALTER TABLE carddav_addressbooks_X RENAME TO carddav_addressbooks;"' sh {} ;
Note: The alter table command can return an error if it doesn't exist. Working accounts will return an error stating carddav_addressbooks_X doesn't exist because they currently don't require repair. This can be safely ignored.
Comments
0 comments
Article is closed for comments.