Решение странной проблемы WordPress: нет адреса сайта, HyperDB, mysql NO_ZERO_DATE

Выглядит это так:

 

И даже так, хотя я админ:

 

Ну и если нажать кнопку Submit for Review, в итоге вот так:

 

С этим что-то нужно делать. На соседних сайтах всё работает нормально, на другом сервере всё работает нормально. Плагин Query Monitor даёт некоторую наводку, где может быть проблема. Это файл db.php от плагина HyperDB. Пробуем удалить этот файл — и действительно, теперь всё работает. Кроме плагина HyperDB, который нужен для поддержки множества баз данных одновременно.

Вспоминаем, что с HyperDB уже были какие-то проблемы, они были связаны с отсутствием поддержки mysqli, нового расширения для работы с mysql. Подобная проблема описана в «Обновление плагина WordPress Form Manager«. Пробуем тот же самый define('WP_USE_EXT_MYSQL', false);, нет, не то.

Дальше смотрим подробнее и выясняется:

 

Проблемы с неверным форматом даты. Гугл подсказывает, что это зависит от режимов mysql, конкретно если в БД включен NO_ZERO_DATE, то дата с нулями работать не будет. Идём в mysql.ini файл настроек нашего mysql-сервера, находим:

И, соответственно, удаляем NO_ZERO_DATE. Перезагружаем сервер mysql, чтобы изменения вступили в силу.

Готово! Странный баг исправлен, в нашем вордпрессе мы опять можем создавать страницы и посты!

 

Видимо, дело было в том, что плагин HyperDB чуть более фривольно работает с базами данных, и позволяет себе добавлять нулевые даты. А конкретно в нашем случае, БД оказалась настроена на отказ нулевым датам. Отсюда ошибки.

Решение или в том, чтобы отказаться от HyperDB, или в том, чтобы настроить mysql разрешать нулевые даты.

Обсуждение

avatar

wpDiscuz