Release Notes
The Parallels Plesk Panel (PP) Database Inconsistency Checker script is designed to detect inconsistencies in the PSA and APSC databases of Parallels Plesk Panel.The script is intended to be run on a server with PP 9.5.4/10.4.4/11.0.9 for Linux or Windows with a MySQL database engine.
The script is currently in the Beta stage and may produce a number of false positives, especially on older PP versions. If the script detects a problem, it does not necessarily indicate that the inconsistency affects anything or needs to be fixed. If you encounter such a case, please report it to this special thread on the Parallels forum.
At the moment, the script does not offer methods for solving detected problems, and does not sort them by how critical they are. Please post all your comments and suggestions related to this script to the special thread on the Parallels forum.
Note that we also have a Plesk Database Schema Checker for checking the integrity of the PP system database.
Usage
Linux:
# /usr/local/psa/bin/sw-engine-pleskrun check_db_integrity-beta.php
Windows:
"%plesk_bin%\php.exe" -dauto_prepend_file="" check_db_integrity-beta.phpOutput description
1. List of records in [psa.hosting.sys_user_id] that miss a matching record in [psa.sys_users.id]11, 33
This means that the "hosting" table has records with sys_user_id that do not have corresponding records in the sys_users table with sys_users.id = hosting.sys_user_id:
# mysql -uadmin -p`cat /etc/psa/.psa.shadow ` -e 'select psa.sys_users.id from psa.sys_users where psa.sys_users.id in (11,33)'
# mysql -uadmin -p`cat /etc/psa/.psa.shadow ` -e 'select psa.hosting.sys_user_id from psa.hosting where psa.hosting.sys_user_id in (11,33)'
+-------------+
| sys_user_id |
+-------------+
| 11 |
| 33 |
+-------------+It should be as follows:
# mysql -uadmin -p`cat /etc/psa/.psa.shadow ` -e 'select psa.sys_users.id from psa.sys_users where psa.sys_users.id in (11,33)'
+----+
| id |
+----+
| 11 |
| 33 |
+----+
# mysql -uadmin -p`cat /etc/psa/.psa.shadow ` -e 'select psa.hosting.sys_user_id from psa.hosting where psa.hosting.sys_user_id in (11,33)'
+-------------+
| sys_user_id |
+-------------+
| 11 |
| 33 |
+-------------+2. List of records in [psa.domains.id WHERE htype='vrt_hst'] that miss a matching record in [psa.hosting.dom_id]
41
This means the same as the first item discussed, but with an additional filter:
# mysql -uadmin -p`cat /etc/psa/.psa.shadow ` -e 'select psa.domains.id from psa.domains where psa.domains.id in (41) and htype="vrt_hst"'
+----+
| id |
+----+
| 41 |
+----+3. List of records in [psa.mail.account_id] that exceed N in 1:N (N=1) relation to [psa.accounts.id]
49 [count in table psa.accounts:1; count in table psa.mail:2]
This indicates that there are multiple identical entries for the psa.mail.account_id field in the psa.mail table, when this entry should be unique:
# mysql -uadmin -pqweqwe -e 'select psa.mail.account_id from psa.mail where psa.mail.account_id=49'
+------------+
| account_id |
+------------+
| 49 |
| 49 |
+------------+4. List of records in [psa.domains.dns_zone_id] should not have a matching record in [psa.domainaliases.dns_zone_id]
70
This indicates that the psa.domains table has the same dns_zone_id as the psa.domainaliases table, when it should not.
No
Yes