Вордпресс: не удалось внести информацию о вложении в базу данных

20 июля 2023

Если Вордпресс при загрузке изображений или других типов файлов перманентно возвращает ошибку «Не удалось внести информацию о вложении в базу данных», тогда вы пришли по адресу, возможно мое решение вам поможет.

Обычно в такой ситуации файлы физически загружаются на сервер. Если подключиться по ФТП, они все будут на месте (значит с правами все нормально). Но файлов в библиотеке нет и воспользоваться ими привычным способом не получится. В интернете гуглится множество разных решений. Большинство из них про нехватку ресурсов и прочее. На самом деле проблема глубже. И скорее всего она в БД, что намного серьезнее.

Чтобы убедиться, что проблема действительно с БД, нужно обязательно включить дебаггер и посмотреть логи.

Открываем wp-config.php в корне сайт и вставляем в него следующие строки:

define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', true);

Теперь все ошибки будут сохраняться в файл debug.log, он лежит в папке wp-content.

Пытаемся снова загрузить файл, ловим ошибку и сразу открываем debug.log.
Если там есть что-то похожее на это, значит проблема точно с БД.

[18-Jul-2023 21:51:21 UTC] WordPress database error Duplicate entry '0' for key 'PRIMARY' for query INSERT INTO `ewp_posts` (`post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_content_filtered`, `post_title`, `post_excerpt`, `post_status`, `post_type`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_parent`, `menu_order`, `post_mime_type`, `guid`) VALUES (4, '2023-07-19 00:51:21', '2023-07-18 21:51:21', '', '', 'test', '', 'inherit', 'attachment', 'closed', 'closed', '', 'test', '', '', '2023-07-19 00:51:21', '2023-07-18 21:51:21', 0, 0, 'image/jpeg', 'https://****/wp-content/uploads/2023/07/test.jpg') made by wp_ajax_upload_attachment, media_handle_upload, wp_insert_attachment, wp_insert_post

Текст ошибки говорит прямо, что в таблице ewp_posts не удается создать новую запись из-за дубля ключа записи. Новый ключ должен создаваться автоматически при добавлении новой записи. Если он не создается, значит в ячейке выключен auto-increment — именно он и отвечает за это.

Auto Increment может быть отключен и в других таблицах, для этого и нужно обязательно проверять логи.

Открываем phpMyAdmin и проверяем.

Как включить auto-increment в MySQL

И просто ставим галочку в A_I — это и есть Auto Increment.

Вордпресс: не удалось внести информацию о вложении в базу данных

После этого ошибка «Не удалось внести информацию о вложении в базу данных» должна уйти.

С природой появления ошибки я не разбирался. Полагаю, она пришла после многочисленных переносов и оптимизаций БД разными сомнительными инструментами.

Иван Данилин
Автор Иван Данилин

Фулстек веб‑разработчик, специализируюсь на платформе WordPress

Подробнее
Добавить комментарий