Ошибка на странице DNS в Parallels Plesk: "Table::select() failed: no such row in the table"

Создана:

2016-11-16 12:57:35 UTC

Изменена:

2017-06-05 05:47:12 UTC

0

Помогла ли вам статья?


Есть вопросы?

Отправить запрос

Ошибка на странице DNS в Parallels Plesk: "Table::select() failed: no such row in the table"

Applicable to:

  • Plesk 11.5 for Windows
  • Odin Business Automation Standard 4.5

Симптомы

Симптомы могут быть разными. Например:

  • Домены Parallels Plesk добавляются в HSPcomplete, но на серверах имен HSPcomplete нет автоматического создания зон DNS.
  • Домен удаляется из Plesk, но не полностью; выдается ошибка.
  • Вы создаете домен, но хостинг не создается и возникает ошибка.

Полный текст ошибки:

ERROR: PleskException
Table::select() failed: no such row in the table

0: /usr/local/psa/admin/plib/dns/DNSZone.php:52
    DNSZone->DNSZone(string '100')
1: /usr/local/psa/admin/plib/common_func.php3:2610
    objectMaker(string 'DNSZone', string '100')
2: /usr/local/psa/admin/plib/dns/DNSManager.php:39
    DNSManager::getDNSZone(string '100')
3: /usr/local/psa/admin/htdocs/domains/dns.php:21

В Plesk для Windows ошибка выглядит по-другому:

Error: DNSZone::Table::select() failed: no such row in the table

Причина

Причина в том, что в " psa.domains " запись таблицы Plesk mysql " dns_zone_id " указывает на несуществующую запись в таблице " psa.dns_zone " для одного или нескольких доменов. Это может происходить из-за внутренних ошибок Plesk, повреждения базы данных, неполного удаления домена, ошибок при поставке из HSPcomplete на сервер Plesk и другим причинам.

Решение

Примечание . Ниже приведено решение на примере Linux. Однако оно полностью подходит и для Windows-серверов. Обратите внимание, что доступ к базе данных psa будет выглядеть по-другому .

Сначала нужно создать соответствующую зону в таблице psa.dns_zone . Войдите в базу данных Plesk:

# mysql -uadmin -p`cat /etc/psa/.psa.shadow` -Dpsa

Найдите домены с отсутствующими ID:

mysql> SELECT d.name FROM domains d LEFT JOIN dns_zone z ON d.dns_zone_id=z.id WHERE z.id IS NULL;

Затем для каждого из найденных доменов выполните следующие действия:

  1. Создайте соответствующие ID с помощью следующих команд. Вместо "DOMAIN-NAME" укажите реальное имя домена, а вместо "ADMIN-EMAIL" – адрес электронной почты:

    mysql> INSERT INTO dns_zone (name, displayName, email) VALUES ('<DOMAIN-NAME>', '<DOMAIN-NAME>', '<ADMIN-EMAIL>');
    
  2. Определите новый ID зоны:

    mysql>  SELECT id, name FROM dns_zone where name='<DOMAIN-NAME>';
    
  3. Подставьте правильный ID в таблицу " psa.domains " и не забудьте заменить <"DOMAIN-NAME"> и <"DNS-ZONE-ID"> на нужные значения:

    mysql> UPDATE domains SET dns_zone_id='<DNS-ZONE-ID>' WHERE name='<DOMAIN-NAME>';
    

Войдите в Plesk. Для всех исправленных доменов перейдите в Домены > <имя домена> > Сайты и домены > DNS и нажмите По умолчанию , чтобы пересоздать записи DNS. Как вариант, выполните следующую команду:

    "%plesk_cli%\dns.exe" --reset <имя домена> -ip <IP-адрес>    

После этого ошибка исчезнет. Теперь вы можете повторить действие, прерванное ошибкой: удаление домена, синхронизацию DNS с HSPcomplete и т.п.

Примечание . Настоятельно рекомендуем обновить компоненты Plesk до последних сборок, в которых устранены эти проблемы.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0
Еще есть вопросы? Отправить запрос
Войдите в службу, чтобы оставить комментарий.