Поддержка Поиск Результаты поиска для 'AUTO_INCREMENT'

Просмотр 15 результатов — с 1 по 15 (из 107)
  • Модератор Yui

    (@fierevere)

    永子

    https://wordpress.stackexchange.com/questions/218533/unusable-menus-and-illegal-widget-setting-id-nav-menu-item-error
    https://stackoverflow.com/questions/49414733/fatal-error-uncaught-exception-exception-with-message-illegal-widget-setting


    попробуйте решение отсюда.
    Судя по всему, в БД потерялось значение AUTO_INCREMENT

    исправить можете сами через PHPMyAdmin хостинга (выбрать БД WP и найти там в меню выполнить запрос / exec query )

    Перед вмешательством убедитесь что у вас точно есть бэкап (!)

    
    ALTER TABLE 'wp_terms'
    CHANGE COLUMN 'term_id' 'term_id' BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
    ADD PRIMARY KEY ('term_id'),
    ADD INDEX 'name' ('name'),
    ADD INDEX 'slug' ('slug');
    

    вот такой запрос.
    Если есть сомнения что, как и где делать — попросите поддержку хостинга, можете им ссылку на эту тему дать.

    • Ответ изменён 2 года, 2 месяца назад пользователем Yui.
    Модератор Yuri

    (@yube)

    Возможно, слетел атрибут AUTO_INCREMENT у суррогатного ключа в одной из таблиц. Смотреть в PhpMyAdmin.
    Возможно, слишком маленькое значение настройки max_input_vars у php. Смотреть phpinfo.
    Список не исчерпывающий.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    В общем сейчас простестил посты, у меня заполняет тот промежуток что остался между старыми и перенесенными постами, поэтому я и тревожусь чтобы не было затирания в будущем.

    А какое сейчас значение AUTO_INCREMENT у таблицы? Можно посмотреть в phpMyAdmin на вкладке «Операции». Там же можно его увеличить до безопасного максимального значения, чтобы не беспокоиться о затирании.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    пока не удалось воспроизвести ситуацию, когда значение AUTO_INCREMENT в таблице меньше одного из существующих ID.

    Проверил ещё раз — при запросе типа

    
    UPDATE wp_posts SET ID = 10000 WHERE ID = 4500;
    

    значение AUTO_INCREMENT в таблице автоматически увеличивается до 10001, как и при вставке новой записи. При попытке изменить его обратно на 4501 ничего не меняется, остаётся на 10001.

    Так что у меня есть некоторые сомнения в том, что «новые пока добавляются дальше на 2000+», если, конечно, в базе что-то не сломано.

    А в чём вообще смысл этих манипуляций с ID? Может быть, задачу, ради которой понадобилось сохранять исходные ID с другого сайта, можно решить проще, если правильно её сформулировать?

    Модератор Yuri

    (@yube)

    AUTO_INCREMENT (в смысле свойства таблицы) должен быть больше максимального значения автоинкрементного поля. Я вообще не уверен, что его можно сделать меньше без хирургического вмешательства (в смысле редактирования непосредственно файлов базы)

    Автор rsl89

    (@rsl89)

    Да в штатном режиме, когда AUTO_INCREMENT дойдет до добавленных постов с ранее увеличенным числом ID, он будет переписывать? Или перепрыгнет имеющиеся и дальше пойдет +1…

    Модератор Yuri

    (@yube)

    В будущем — в смысле в штатном режиме? Должно увеличиваться на 1 после каждого insert. В PMA в «операциях» таблицы можно посмотреть (и изменить) текущее (следующее) значение AUTO_INCREMENT.

    Автор rsl89

    (@rsl89)

    Юрий, подскажите, так как поведет себя auto_increment в будущем, учитывая что они не сломан? Будет затирать или продолжит?

    Модератор Yuri

    (@yube)

    Может быть это связано с тем что я напрямую меняю ид:

    Конечно. Если не указывать id явно, то insert будет создавать новое значение, следующее после максимального. Если, конечно, не сломаны auto_increment и primary key.

    Автор WP_8

    (@samumray)

    Да, и убедитесь, что не потерялся флаг AUTO_INCREMENT.

    Как раз и потерялся.

    Ставлю в wp_postmeta флаг в A_I (AUTO_INCREMENT.)
    Выдаёт ошибку: #1075
    Ниже отсутствует индекс PRIMARY.
    Ввёл индекс PRIMARY, выдало ошибку #1062

    обнуляются загруженные изображения (серые).

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Ответил в предыдущей теме, но теперь вижу, что ответ требует уточнения, т.к. мне пока не удалось воспроизвести ситуацию, когда значение AUTO_INCREMENT в таблице меньше одного из существующих ID.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    wp_insert_post не позволяет это сделать

    При внимательном рассмотрении оказалось, что всё же позволяет 🙂

    Там есть недокументированный параметр «import_id», предназначенный именно для импорта записей с нужными ID.

    Создал тикет, чтобы добавить его в документацию: #52943.

    новые посты продолжают добавляться с 4500 ид, когда они дойдут до 10000 они перескочат автоинкрементом, или начнут затирать имеющиеся?

    Думаю, проще проверить на тестовой установке, чем ждать ответа 🙂

    Сейчас проверил — при вставке записи с ID 10000 значение AUTO_INCREMENT в таблице автоматически увеличивается до 10001, т.е. после импорта новые записи пойдут дальше, а промежуток от 4500 до 10000 не будет использоваться.

    Разобрался сам и публикую ответ:

    — Если у вас при нажатии на «Опубликовать» страницу, она уходит на модерацию
    — Если в готовой странице не можете заменить шаблон на другой
    — Если при добавлении очередного пункта в меню оно добавляется «криво», вместо названия — Элемент меню, а ссылка пропадает
    — Если у вас что-то происходит, но вы уже теряете надежду, то:

    1. Зайдите в wp-config и замените/добавьте недостающие строки:
    define(‘WP_DEBUG’, true);
    define(‘WP_DEBUG_DISPLAY’, false);
    define(‘WP_DEBUG_LOG’, true);

    Этим вы включили полное логирование сайта.

    2. Произведите ваши действия. Найдите их в логах про времени. Вот в моем случае:
    [17-Feb-2021 10:03:03 UTC] База данных WordPress возвратила ошибку Duplicate entry ‘0’ for key ‘PRIMARY’ в ответ на запрос INSERT INTO atlas63ru_postmeta (post_id, meta_key, meta_value) VALUES (2903, ‘_menu_item_type’, ‘custom’), выполненный do_action(‘wp_ajax_add-menu-item’), WP_Hook->do_action, WP_Hook->apply_filters, wp_ajax_add_menu_item, wp_save_nav_menu_items, wp_update_nav_menu_item, update_post_meta, update_metadata, add_metadata

    3. Заходим через phpmyadmin в косячную таблицу. В данном случае posmeta и видим, что у первичного ключа отсутствует автоинкремент. То есть уже есть 2047 записей, а пытается добавиться запись с номером 0, а не 2048. Исправляем в структуре AUTO_INCREMENT.

    Вот и всё! Не ждите помощи, а разбирайтесь сами.

    Так же, такая проблема может быть, если в таблице wp_posts отсутствует AUTO_INCREMENT у ID. В этом случае все новые картинки при загрузке любым способом выдают ошибку, добавляются с ID 0 и отображаются как пустые страницы в Библиотеке.

    Модератор Yuri

    (@yube)

    А в базе данных term_id = 0.

    Это признак того, что после каких-то манипуляций с базой и/или серьезного сбоя сервера слетел флаг AUTO_INCREMENT у поля term_id. Проблема, увы, не редкая. https://ru.wordpress.org/support/search/AUTO_INCREMENT/

Просмотр 15 результатов — с 1 по 15 (из 107)