Symptoms
- Opening domains tab in Domains > example.com or Domain > example.com > Hosting Settings results in the following error:
PLESK_ERROR: Internal error: Unable to find service node for web service on domain with id=23
Cause
Database inconsistency.
Resolution
Connect to the server via SSH/RPD and resolve the inconsistency:
Case 1: If there are mismatches in DomainServices.ipCollectionId and IpAddressesCollections.ipCollectionId
-
Find all missing
ipCollectionId
records inIpAddressesCollections
table:MYSQL_WIN: mysql> SELECT dom_id,ipCollectionId FROM DomainServices where ipCollectionId not in (select ipCollectionId from IpAddressesCollections) and type=’web’;
+——–+—————-+
| dom_id | ipCollectionId |
+——–+—————-+
| 23 | 80 |
+——–+—————-+
1 row in set (0.00 sec) -
Using domain ID (
dom_id
) value, find what IP address should be assigned to this domain:MYSQL_WIN: mysql> select ip_address_id,type from ip_pool where id=(select pool_id from clients where id=(select cl_id from domains where id=23));
+—————+———–+
| ip_address_id | type |
+—————+———–+
| 5 | shared |
+—————+———–+
1 row in set (0.00 sec) -
Make sure that this IP address exists:
MYSQL_WIN: mysql> select id,ip_address from IP_Addresses where id=5;
+—-+—————–+
| id | ip_address |
+—-+—————–+
| 5 | 123.123.123.123 |
+—-+—————–+
1 row in set (0.00 sec) -
Insert missing value in the
IpAddressesCollections
table:MYSQL_WIN: mysql> insert into IpAddressesCollections (ipCollectionId, ipAddressId) values (’80’,’5′);
Case 2: If there is an incorrect or non-existent ip_addr_id parameter set for a domain name
- Create
psa
database backup -
Find what ip_address_id is assigned to a domain name with id=23:
MYSQL_WIN: mysql> SELECT `param`, `val` FROM dom_param WHERE dom_id = 23;
+———————+————————————–+
| param | val |
+———————+————————————–+
| ip_addr_id | 2 |
+———————+————————————–+MYSQL_WIN: mysql> SELECT ip_address_id FROM ip_pool WHERE id=(SELECT pool_id FROM clients WHERE id=(SELECT cl_id FROM domains WHERE id=23));
+—————+
| ip_address_id |
+—————+
| 1 |
| 2 |
+—————+ -
Check if the IPs with ip_address_id 1 and 2 exist:
MYSQL_WIN: mysql> SELECT id,ip_address FROM IP_Addresses WHERE id=1;
+—-+—————–+
| id | ip_address |
+—-+—————–+
| 1 | 123.123.123.123 |
+—-+—————–+
1 row in set (0.00 sec)
mysql> SELECT id,ip_address FROM IP_Addresses WHERE id=2;
Empty set (0.00 sec) -
Update the ID for the IP_Addresses table:
MYSQL_WIN: mysql> UPDATE IP_Addresses SET id=2 WHERE ip_address=’123.123.123.123′;
-
Check if the domain is accessible in Plesk now. The following error may appear:
Error: Unable to find service node for ip address with id=1
Follow the next step.
-
Check what ID does ip_address_id=2 have in the in ip_pool table:
MYSQL_WIN: mysql> SELECT * FROM ip_pool;
+—-+—————+———–+
| id | ip_address_id | type |
+—-+—————+———–+
| 1 | 1 | exclusive |
| 1 | 2 | exclusive |
+—-+—————+———–+
2 rows in set (0.00 sec) -
ip_address_id=2 should have a unique id=1. Update the ip_pool table:
MYSQL_WIN: mysql> UPDATE ip_pool SET id=2 WHERE ip_address_id=1;