• Реанимирую и реструктуризирую сайт. При попытке создать новое меню (wp-admin/nav-menus.php) выдаёт «Не удалось вставить элемент в базу данных». Не пойму, что за фигня. Кто-то сталкивался? В поисковиках много всего понаписано, всё сводится к базам банных, но с ними ничего не делал, да раньше проблем не было. Кто может помочь?

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Yui

    (@fierevere)

    永子

    начните с проверки и ремонта целостности таблиц в базе данных
    это можно сделать в phpMyAdmin (доступен в панели хостинга)

    также посмотрите лог ошибок PHP

    Автор dmitrievdenissergeevich

    (@dmitrievdenissergeevich)

    начните с проверки и ремонта целостности таблиц в базе данных

    А есть ссылки на командные строки для проверки таблиц? Лог почему-то отключен… Как включить ещё не разобрался.

    Модератор Yui

    (@fierevere)

    永子

    командная строка с шелла

    
    mysqlcheck -c ИМЯБАЗЫ -u ПОЛЬЗОВАТЕЛЬ -p
    mysqlcheck -r ИМЯБАЗЫ -u ПОЛЬЗОВАТЕЛЬ -p
    mysqlcheck -o ИМЯБАЗЫ -u ПОЛЬЗОВАТЕЛЬ -p
    

    проверка, ремонт, оптимизация, можно выполнить все три последовательно

    Либо командная строка для mysql: (в примере использована БД с именем wptest)

    MariaDB [(none)]> use wptest
    Database changed
    MariaDB [wptest]> select concat('REPAIR TABLE ', table_name, ';') from information_schema.tables where table_schema='wptest' ; 
    
    Автор dmitrievdenissergeevich

    (@dmitrievdenissergeevich)

    также посмотрите лог ошибок PHP

    С логом разобрался, с проверкой мучаюсь…

    База данных WordPress возвратила ошибку Duplicate entry ‘0’ for key ‘PRIMARY’ в ответ на запрос INSERT INTOwp_terms(name,slug,term_group) VALUES (‘Левое меню_9’, ‘%d0%bb%d0%b5%d0%b2%d0%be%d0%b5-%d0%bc%d0%b5%d0%bd%d1%8e_9’, 0), выполненный wp_update_nav_menu_object, wp_insert_term

    • Ответ изменён 5 лет, 4 месяца назад пользователем dmitrievdenissergeevich.
    Автор dmitrievdenissergeevich

    (@dmitrievdenissergeevich)

    Я, так полагаю, для wp_terms не включен AUTO_INCREMENT ??? Как включить?

    Модератор Yui

    (@fierevere)

    永子

    1. сделать бэкап (!)
    и проверить что у вас есть еще бэкапы всего

    2. https://wordpress.stackexchange.com/questions/225641/wordpress-database-lost-auto-increment верхний ответ с запросами

    ALTER TABLE wp_termmeta MODIFY COLUMN meta_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_terms MODIFY COLUMN term_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_term_taxonomy MODIFY COLUMN term_taxonomy_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_commentmeta MODIFY COLUMN meta_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_comments MODIFY COLUMN comment_ID bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_links MODIFY COLUMN link_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_options MODIFY COLUMN option_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_postmeta MODIFY COLUMN meta_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_users MODIFY COLUMN ID bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_posts MODIFY COLUMN ID bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_usermeta MODIFY COLUMN umeta_id bigint(20) unsigned NOT NULL auto_increment;
    
    CREATE INDEX term_id on wp_termmeta (term_id);
    CREATE INDEX meta_key on wp_termmeta (meta_key(191));
    CREATE INDEX slug on wp_terms (slug(191));
    CREATE INDEX name on wp_terms (name(191));
    CREATE UNIQUE INDEX term_id_taxonomy on wp_term_taxonomy (term_id, taxonomy);
    CREATE INDEX taxonomy on wp_term_taxonomy (taxonomy );
    CREATE INDEX comment_id on wp_commentmeta (comment_id);
    CREATE INDEX meta_key on wp_commentmeta (meta_key(191));
    CREATE INDEX comment_post_ID on wp_comments (comment_post_ID);
    CREATE INDEX comment_approved_date_gmt on wp_comments (comment_approved,comment_date_gmt);
    CREATE INDEX comment_date_gmt on wp_comments (comment_date_gmt);
    CREATE INDEX comment_parent on wp_comments (comment_parent);
    CREATE INDEX comment_author_email on wp_comments (comment_author_email(10));
    CREATE INDEX link_visible on wp_links (link_visible);
    CREATE UNIQUE INDEX option_name on wp_options (option_name);
    CREATE INDEX post_id on wp_postmeta (post_id);
    CREATE INDEX meta_key on wp_postmeta (meta_key);
    CREATE INDEX post_name on wp_posts (post_name(191));
    CREATE INDEX type_status_date on wp_posts (post_type,post_status,post_date,ID);
    CREATE INDEX post_parent on wp_posts (post_parent);
    CREATE INDEX post_author on wp_posts (post_author);
    CREATE INDEX user_login_key on wp_users (user_login);
    CREATE INDEX user_nicename on wp_users (user_nicename);
    CREATE INDEX user_email on wp_users (user_email);
    CREATE INDEX user_id on wp_usermeta (user_id);
    CREATE INDEX meta_key on wp_usermeta (meta_key(191));
    
    ALTER TABLE wp_terms AUTO_INCREMENT = 10000;
    ALTER TABLE wp_term_taxonomy AUTO_INCREMENT = 10000;
    ALTER TABLE wp_commentmeta AUTO_INCREMENT = 10000;
    ALTER TABLE wp_comments AUTO_INCREMENT = 10000;
    ALTER TABLE wp_links AUTO_INCREMENT = 10000;
    ALTER TABLE wp_options AUTO_INCREMENT = 10000;
    ALTER TABLE wp_postmeta AUTO_INCREMENT = 10000;
    ALTER TABLE wp_users AUTO_INCREMENT = 10000;
    ALTER TABLE wp_posts AUTO_INCREMENT = 10000;
    ALTER TABLE wp_usermeta AUTO_INCREMENT = 10000;

    также у нас по форуму поищите https://ru.wordpress.org/support/search/AUTO_INCREMENT/

    но (!) ошибка вообще-то должна была в общем случае исправиться при REPAIR

    Автор dmitrievdenissergeevich

    (@dmitrievdenissergeevich)

    dmitridw_el.wp_terms
    repair
    note
    Обработчик таблицы не поддерживает этого: repair
    Модератор Yui

    (@fierevere)

    永子

    А что за тип таблиц у вас, что не поддерживается операция
    REPAIR TABLE wp_terms ?

    Автор dmitrievdenissergeevich

    (@dmitrievdenissergeevich)

    А что за тип таблиц у вас, что не поддерживается операция

    InnoDB

    Автор dmitrievdenissergeevich

    (@dmitrievdenissergeevich)

    Ошибка
    SQL запрос:

    ALTER TABLE
    wp_terms MODIFY COLUMN term_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
    Ответ MySQL: Документация

    #1062 — ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ‘1’ for key ‘PRIMARY’

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Ошибка «Не удалось вставить элемент в базу данных»» закрыта для новых ответов.