Модератор
Юрій
(@yube)
Если сделать экспорт, то ошибка, по идее должна остаться.
Так добавьте, кто мешает? Собственно сами индексы не экспортируются, только их описание в структуре, так что им в любом случае суждено пересоздаться.
Если что
ALTER TABLE wp_postmeta
ADD PRIMARY KEY (meta_id),
ADD KEY post_id (post_id),
ADD KEY meta_key (meta_key (191));
Да, и убедитесь, что не потерялся флаг AUTO_INCREMENT.
-
Ответ изменён 4 года, 1 месяц назад пользователем Юрій.
-
Ответ изменён 4 года, 1 месяц назад пользователем Юрій.
Автор
WP_8
(@samumray)
Выяснил возможную причину проблем с серыми квадратиками вместо изображений.
Она точно описана в одном из сообщений на форуме:
Вы пытались перенести сайт WordPress?
Если это так, то если вы сделали следующее, то произойдет вышеупомянутая ошибка.
Вы сделали резервную копию своей базы данных WordPress MySQL
Вы настраиваете новый сайт WordPress
Затем вы попытались восстановить резервную копию на этом недавно настроенном сайте WordPress
После шага 2 вы должны сначала удалить все таблицы из новой базы данных WordPress, в которую вы восстановите резервную копию на шаге 3.
Сообщения об ошибках появляются из-за того, что вы попытались импортировать дамп MySQL (файл базы данных) в непустую базу данных WordPress. Когда вы настраиваете сайт WordPress, он создает необходимые таблицы и вставляет несколько примеров записей, таких как комментарий. Итак, в вашей базе данных уже есть комментарий с id==1, и ваша резервная копия пытается добавить еще один комментарий с id==1 (скорее всего, первый реальный комментарий, добавленный на ваш сайт).
—————————————————
1. Открыл таблицы работающего сайта и сайта с ошибкой, начал сверять структуры каждой таблицы.
2. Нашёл несоответствие в таблице wp_postmeta в виде отсутствия галочки AUTO_INCREMENT.
3. Поставил галочку, при сохранении выдало ошибку: #1075
4. Опустился ниже, и увидел, что отсутствует индекс PRIMARY.
5. Ввёл индекс PRIMARY, выдало ошибку #1062
Как устранить эту ошибку?
В меру моего понимания ситуации всё необходимое предоставлено. Сейчас ради эксперимента заново создал базу и заново импортировал в неё SQL-файл, предварительно дав через phpmyadmin всем SQL-пользователям все возможные привилегии. Проблема сохранилась.
При импорте система запрашивает файл SQL с базой. Кодировку (utf-8). Разрешение скрипту разбивать процесс импорта при приближении временного лимита (до этого не доходит, всё импортируется за секунды). Формат (SQL). Параметры формата. Режим совместимости SQL: NONE. Не использовать атрибут auto_increment для нулевых значений (галочка стоит по-дефолту, её оставляю). Read as multibytes (галочка не стоит, так и оставляю).
Модератор
Юрій
(@yube)
нужно как-то инкрементировать это значение?
Его вообще не нужно указывать. Поле ID объявлено в таблице как AUTO_INCREMENT, поэтому mysql при INSERT сам подставит нужное значение.
Модератор
Юрій
(@yube)
Я бы для начала проверил целостность таблицы term_taxonomy и атрибут AUTO_INCREMENT у поля term_taxonomy_id в той же таблице.
Спасибо, Юрий.
CREATE TABLE IF NOT EXISTS $tbl_countries
(
id
int(10) unsigned NOT NULL auto_increment,
iso2
char(2) NOT NULL,
name
varchar(255) NOT NULL,
PRIMARY KEY (id
),
UNIQUE iso2
(iso2
),
INDEX country_iso2
(iso2
)
) ENGINE = InnoDB, CHARACTER SET = utf8, COLLATE = $charset_collate;
E;
Посмотрите в базе данных, возможно у вас слетели параметры таблицы wp_posts.
А именно «ID» — должен быть уникальным и иметь флаг AUTO_INCREMENT.
Если их нет то и создать нормально страницу не получится так как не получится присвоить уникальный id поста.
К качестве иллюстрации: http://prntscr.com/rmfytr
Ошибка
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’
Модератор
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
Я, так полагаю, для wp_terms не включен AUTO_INCREMENT ??? Как включить?
Автор
WP_8
(@samumray)
Юрий спасибо.
Вот нашёл в сети такое предлагаемое решение:
Зайти phpmyadmin и в таблице присвоить для id в “Дополнительно” значение “AUTO_INCREMENT” (поставить галочку в колонке A_I). После этого ошибка пропала. Причина была в том, что первая запись в таблице имела id = 1, а когда импортировалась БД, то AUTO_INCREMENT не передался. Когда добавлять новую запись, то ей присваивается сначала id = 0; когда следующую, то id = 1
Но не нашёл в БД где этот Tabl.
Модератор
Юрій
(@yube)