Поддержка Проблемы и решения Проблема с таблицей wp_term_relationships

  • В продолжение сегодняшних мучений моих

    Проблема, похоже, аналогичная — индексы, автоинкременты в таблицах (они послетали). Кое-где я поправил, но не знаю, что делать с таблицей wp_term_relationships.

    Не получается изменить категорию товара (Woocommerce) в админке — просто ничего не происходит, а в еррорлоге появляется такая запись.

    [16-Feb-2018 15:42:40 UTC] База данных WordPress возвратила ошибку Duplicate entry '1220' for key 'PRIMARY' в ответ на запрос INSERT INTOwp_term_relationships(object_id,term_taxonomy_id`) VALUES (1220, 93), выполненный edit_post, wp_update_post, wp_insert_post, wp_set_post_terms, wp_set_object_terms, do_action(‘set_object_terms’), WP_Hook->do_action, WP_Hook->apply_filters, WC_Post_Data::force_default_term, wp_set_post_terms, wp_set_object_terms
    [16-Feb-2018 15:42:50 UTC] База данных WordPress возвратила ошибку Duplicate entry ‘1220’ for key ‘PRIMARY’ в ответ на запрос INSERT INTO wp_term_relationships (object_id, term_taxonomy_id) VALUES (1220, 92), выполненный edit_post, wp_update_post, wp_insert_post, wp_set_post_terms, wp_set_object_terms
    `

    • Тема изменена 5 лет, 3 месяца назад пользователем siarzhukby.
    • Тема изменена 5 лет, 3 месяца назад пользователем siarzhukby.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Посмотрел на другой установке WP эту таблицу — там object_id первичный, term_taxonomy_id первичный индекс, автоинкремента нет нигде.
    Пытался воспроизвести структуру здесь: object_id первичный без проблем, term_taxonomy_id индекс без проблем, term_taxonomy_id первичный не устанавливается с сообщением об ошибке:
    ALTER TABLEwp_term_relationshipsDROP PRIMARY KEY, ADD PRIMARY KEY(term_taxonomy_id`);

    Ответ MySQL: Документация
    #1062 — Дублирующаяся запись ‘3’ по ключу ‘PRIMARY’`

    Обзор таблицы: http://joxi.ru/a2XDxaoCyYQpG2
    Структура таблицы: http://joxi.ru/52ay8NDUGzleV2

    • Ответ изменён 5 лет, 3 месяца назад пользователем siarzhukby.

    У Вас, похоже, посыпалась база. Вероятно вследствии некорректно сделанного дампа или восстановления. Автоинкрименты сами по себе не слетают

    В том же топике см выше мои рекомендации https://ru.wordpress.org/support/topic/%d0%b8%d1%80%d0%be%d0%b3%d0%bb%d0%b8%d1%84%d1%8b-%d0%bf%d1%80%d0%b8-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b8-%d0%bd%d0%be%d0%b2%d0%be%d0%b9-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b8/page/2/#post-270872

    Это, похоже, выползло после того, как хостер перенес сайт на другой сервер. Со старым были проблемы по работоспособности, часто вылетали 500-е ошибки.
    Что-то не учли при переносе очевидно )).

    Кодировки 1251 нигде нет, но вот наряду с обычной utf8_general_ci встречается у некоторых таблиц какая-то utf8mb4_unicode_ci.

    Автоинкременты вроде все поборол. Пока уперся в эту таблицу. Хотя потом, конечно, может еще что-то вылезти.

    Модератор Yuri

    (@yube)

    Что-то не учли при переносе очевидно )).

    Именно! Наличие индексов у таблиц. Это еще надо умудриться так перенести! У меня за 20 лет работы с mysql ни разу так не получалось.

    но вот наряду с обычной utf8_general_ci встречается у некоторых таблиц какая-то utf8mb4_unicode_ci.

    Это современная кодировка (сравнение). Вообще стоит все таблицы привести к одной.

    У меня за 20 лет работы с mysql ни разу так не получалось.

    У меня нек лет назад было на одном хостинге. Причина в кривых настройках хостера (ПМА?). Уж не знаю как такое можно было настроить, то реально автоинкрименты потерлись. Вот только уже не помню — при создании дампа или при выгрузке оного через ПМА. Благо, обнаружилось почти разу и в пределах одного хостинга. Заюзал Sypex Dumper тогда для дампов.

    , как хостер перенес сайт на другой сервер.

    хостер САЙТ переносил? Тогда всё ещё хуже. Сериализованные данные тоже полетели.

    Или же хостинг-аккаунт? Но тогда в принципе и база не должна была пострадать.

    Буду думать-колдовать. Старые дампы есть, там где все в порядке с автоинкрементами должно быть. Буду изучать.
    Может вторую базу создать на хостинге и на ней экспериментировать…

    Может вторую базу создать на хостинге и на ней экспериментировать…

    Это хорошее решение.
    Но если Вы меняли хостинг (изменились физ пути к файлам), то нужно аккуратно изменить значения. Не простой заменой а с учетом сериализованных данных.
    https://interconnectit.com/products/search-and-replace-for-wordpress-databases/ в помощь.
    А если и домен, то и его после путей аккуратно поменять.

    Или же хостинг-аккаунт? Но тогда в принципе и база не должна была пострадать.

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

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Проблема с таблицей wp_term_relationships» закрыта для новых ответов.