Plesk

Unable to get the list of subscriptions via CLI: Unable to load object of type BsDomain with id

Symptoms

Unable to get the list of subscriptions via CLI due to the following error:

# plesk bin subscription --list

example1.com
example2.com

<...>

Unable to load object of type BsDomain with id=101: Domain does not exist.
exit status 1

Cause

The Plesk database contains orphaned records.

Resolution

Linux

  1. Connect to the server via SSH

  2. Create a dump of the Plesk database:

    # plesk db dump psa > /root/psa_backup.sql

  3. Make sure the domain with the ID shown in the error message doesn't exist by running the following commands:

    Warning: If any of these commands return a result, then try to repair Plesk database with the command "plesk repair db". For more information about this utility, see this documentation page.

    # plesk db "select * from domains where id = 101"
    (Empty Output)

    # plesk db "select * from hosting where dom_id = 101"
    (Empty Output)

  4. Get the subscription_id value associated to the object_id with the ID shown in the error message:

    # plesk db "select id,object_id from Subscriptions where object_id=101"
    +----+-----------+
    | id | object_id |
    +----+-----------+
    | 75 | 101 |
    +----+-----------+

  5. Remove the orphaned records from the Plesk database:

    # plesk db "delete from Subscriptions where object_id=101 and object_type='domain'"

    # plesk db "delete from SubscriptionProperties where subscription_id=75"

    # plesk db "delete from PlansSubscriptions where subscription_id=75"

Windows

  1. Connect to the server via RDP

  2. Start a command prompt as Administrator

  3. Create a dump of the Plesk database:

    C:> plesk db dump psa > C:psa_backup.sql

  4. Make sure the domain with the ID shown in the error message doesn't exist by running the following commands:

    Warning: If any of these commands return a result, then try to repair Plesk database with the command "plesk repair db". For more information about this utility, see this documentation page.

    C:> plesk db "select * from domains where id = 101"
    (Empty Output)

    C:> plesk db "select * from hosting where dom_id = 101"
    (Empty Output)

  5. Get the subscription_id value associated to the object_id with the ID shown in the error message:

    C:> plesk db "select id,object_id from Subscriptions where object_id=101"
    +----+-----------+
    | id | object_id |
    +----+-----------+
    | 75 | 101 |
    +----+-----------+

  6. Remove the orphaned records from the Plesk database:

    C:> plesk db "delete from Subscriptions where object_id=101 and object_type='domain'"

    C:> plesk db "delete from SubscriptionProperties where subscription_id=75"

    C:> plesk db "delete from PlansSubscriptions where subscription_id=75"