Ошибка «Не удалось вставить элемент в базу данных»
-
Реанимирую и реструктуризирую сайт. При попытке создать новое меню (wp-admin/nav-menus.php) выдаёт «Не удалось вставить элемент в базу данных». Не пойму, что за фигня. Кто-то сталкивался? В поисковиках много всего понаписано, всё сводится к базам банных, но с ними ничего не делал, да раньше проблем не было. Кто может помочь?
-
начните с проверки и ремонта целостности таблиц в базе данных
это можно сделать в phpMyAdmin (доступен в панели хостинга)также посмотрите лог ошибок PHP
начните с проверки и ремонта целостности таблиц в базе данных
А есть ссылки на командные строки для проверки таблиц? Лог почему-то отключен… Как включить ещё не разобрался.
командная строка с шелла
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' ;
также посмотрите лог ошибок PHP
С логом разобрался, с проверкой мучаюсь…
База данных WordPress возвратила ошибку Duplicate entry ‘0’ for key ‘PRIMARY’ в ответ на запрос INSERT INTO
wp_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.
Я, так полагаю, для wp_terms не включен AUTO_INCREMENT ??? Как включить?
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
dmitridw_el.wp_terms repair note Обработчик таблицы не поддерживает этого: repair
А что за тип таблиц у вас, что не поддерживается операция
REPAIR TABLE wp_terms
?А что за тип таблиц у вас, что не поддерживается операция
InnoDB
Ошибка
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’
- Тема «Ошибка «Не удалось вставить элемент в базу данных»» закрыта для новых ответов.