Вордпресс: не удалось внести информацию о вложении в базу данных
Если Вордпресс при загрузке изображений или других типов файлов перманентно возвращает ошибку «Не удалось внести информацию о вложении в базу данных», тогда вы пришли по адресу, возможно мое решение вам поможет.
Обычно в такой ситуации файлы физически загружаются на сервер. Если подключиться по ФТП, они все будут на месте (значит с правами все нормально). Но файлов в библиотеке нет и воспользоваться ими привычным способом не получится. В интернете гуглится множество разных решений. Большинство из них про нехватку ресурсов и прочее. На самом деле проблема глубже. И скорее всего она в БД, что намного серьезнее.
Чтобы убедиться, что проблема действительно с БД, нужно обязательно включить дебаггер и посмотреть логи.
Открываем 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 и проверяем.
И просто ставим галочку в A_I — это и есть Auto Increment.
После этого ошибка «Не удалось внести информацию о вложении в базу данных» должна уйти.
С природой появления ошибки я не разбирался. Полагаю, она пришла после многочисленных переносов и оптимизаций БД разными сомнительными инструментами.
Фулстек веб‑разработчик, специализируюсь на платформе WordPress
Подробнее