Ироглифы при создании новой записи
-
При создании новой записи вся админка становится ироглифами, типа:
Добавить запись
И такое предупреждении:
Warning: Creating default object from empty value in /home/…………./docs/wp-admin/includes/post.php on line 642Два дня назад обновляли WordPress с 4.3 до 4.9.1 обновления проходили успешно.
Увидев страницу с ироглифами отключил все плагины и тему заменил на дефолтную, не помогло.
-
Возможно поможет такой финт
1. Взять этот дамп и в правильном блокноте открыть в 1251 (проверить отсутствие кроказяб) и пересохранить в UTF8.
Вероятность что не будет крокозаб низка, но вдруг.Если поможет, то дальше:
2. Создать БД в правильной кодировке.
3. Настроить хостинг (а лучше сменить на нормальный. И его настроить 😉 )
4. Залить этот дамп (изменив в нём кодировку таблиц). Убедиться что индексы-автоинкримент не побились.
5. В конфиге ВП подключить эту БД.Но надежнее всего — переделать сайт используя импорт-экспорт контента.
php-ворнинг и кривая кодировка базы никак не связаны.
данным ворнингом гугл забит — рекомендую просто погуглить ошибку и найти подходящее решение.Это все конечно интересно, только мне что делать.
Я готов согласно инструкции (ссылку выше дал) таблицы переделать на UTF-8 в них 4 только таблицы где встречается CHARSET=cp1251 больше нет.
Только не испортит ли мне базу, и какой толк менять эти таблицы, как я понял таблицы на плагины ссылаются, которые я все равно отключаю?4 таблицы где нужно предположительно изменить CHARSET=cp1251:
DROP TABLE IF EXISTS
wp_WP_SEO_404_links`;
CREATE TABLE IF NOT EXISTSwp_WP_SEO_404_links
(
ID
int(11) unsigned NOT NULL,
ctime
datetime NOT NULL,
link
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
referrer
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
ip
varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
country
varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
os
varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
browser
varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;DROP TABLE IF EXISTS
wp_WP_SEO_Cache
;
CREATE TABLE IF NOT EXISTSwp_WP_SEO_Cache
(
ID
int(11) unsigned NOT NULL,
is_redirected
int(1) unsigned NOT NULL,
redirect_from
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
redirect_to
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
redirect_type
int(3) unsigned NOT NULL DEFAULT ‘301’
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;DROP TABLE IF EXISTS
wp_WP_SEO_Redirection
;
CREATE TABLE IF NOT EXISTSwp_WP_SEO_Redirection
(
ID
int(11) unsigned NOT NULL,
enabled
int(1) NOT NULL DEFAULT ‘1’,
redirect_from
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
redirect_from_type
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
redirect_from_folder_settings
int(1) NOT NULL,
redirect_from_subfolders
int(1) NOT NULL DEFAULT ‘1’,
redirect_to
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
redirect_to_type
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
redirect_to_folder_settings
int(1) NOT NULL DEFAULT ‘1’,
regex
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
redirect_type
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
url_type
int(2) NOT NULL DEFAULT ‘1’,
postID
int(11) unsigned DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;DROP TABLE IF EXISTS
wp_WP_SEO_Redirection_LOG
;
CREATE TABLE IF NOT EXISTSwp_WP_SEO_Redirection_LOG
(
ID
int(11) unsigned NOT NULL,
rID
int(11) unsigned DEFAULT NULL,
postID
int(11) unsigned DEFAULT NULL,
ctime
datetime NOT NULL,
rfrom
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
rto
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
rtype
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
rsrc
varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
referrer
varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
ip
varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
country
varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
os
varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
browser
varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;`Фу, блин, я тут уже 2 поста пропустил… читаю их
- Ответ изменён 6 лет, 8 месяцев назад пользователем Egor2015.
php-ворнинг и кривая кодировка базы никак не связаны.
Скорее всего так и есть. В стартпосте возможно 2е разные проблемы. Если только $post_type не был как-то задан кириллицей. Это вроде ВП не даст, но если в руками лазили в базу, то и не такое возможно.
Кстати, лог ошибок php смотрели?
Я сделал так: define(‘WP_DEBUG’, 1); — дать возможность админке показывать ошибки
В результате на экране:
WordPress: [Duplicate entry ‘0’ for key ‘PRIMARY’]
INSERT INTOwp_posts
(post_author
,post_date
,post_date_gmt
,post_content
,post_content_filtered
,post_title
,post_excerpt
,post_status
,post_type
,comment_status
,ping_status
,post_password
,post_name
,to_ping
,pinged
,post_modified
,post_modified_gmt
,post_parent
,menu_order
,post_mime_type
,guid
) VALUES (1, ‘2018-01-12 17:32:51’, ‘0000-00-00 00:00:00’, », », ‘Черновик’, », ‘auto-draft’, ‘post’, ‘open’, ‘open’, », », », », ‘2018-01-12 17:32:51’, ‘0000-00-00 00:00:00’, 0, 0, », »)Notice: Trying to get property of non-object in /home/…………./docs/wp-admin/includes/post.php on line 610
Warning: Creating default object from empty value in /home/…………./docs/wp-admin/includes/post.php on line 642
…………………- Ответ изменён 6 лет, 8 месяцев назад пользователем Egor2015.
Duplicate entry ‘0’ for key ‘PRIMARY’
Опаньки! Я такое уже видел.
Идете в PMA и смотрите в таблице wp_posts:
1. в структуре — не слетел ли атрибут auto_increment поля ID.
2. В табе «операции» — значение AUTO_INCREMENT. Значение должно быть больше, чем максимальное значение в поле ID (
select max(id) from wp_posts
)
Аналогично по всем остальным таблицам.
p.s. Видел не у WP, а у vBulletin.
- Ответ изменён 6 лет, 8 месяцев назад пользователем Юрій. Причина: p.s
Юрий просто супер вы, огромное спасибо!!!
1. Ваш пункт первый сделал и заработали новые записи и страницы.
Для комментариев поставил галочку на auto_increment и тоже они заработали.2. табе «операции» — значение AUTO_INCREMENT — Это нашел и цифра стоит, но не понял с чем сравнить((( в каком месте другая цифра.
А то я уже отчаялся было)
- Ответ изменён 6 лет, 8 месяцев назад пользователем Egor2015.
в каком месте другая цифра.
Ее можно «спросить» (таб SQL):
select max(id) from wp_posts
Нашел: max(id) 2434, а AUTO_INCREMENT 2435
то есть больше, все ок?да, ОК.
И так «спрашивать» у всех таблиц?
только если у таблицы слетел флаг автоинкремента.
Еще бы неплохо выяснить причину слёта. Я знаю только две: сбой железа и кто-то очень неумело поковырялся. Возможно, коллеги еще подскажут.
AUTO_INCREMENT не во всех таблицах ставится, иногда ошибку вызывает галочка. Например, таблица: wp_usermeta.
Ошибка запроса:
#1062 — ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ‘1’ for key ‘PRIMARY’Подобные таблицы пропускаю, иду дальше.
Я имел в виду таблицы, в которых он должен быть.
см. схему таблиц в инсталляторе или поставьте где-то WP с нуля и с ним сравнивайте.
Понял, большое спасибо!
Я знаю только две: сбой железа и кто-то очень неумело поковырялся. Возможно, коллеги еще подскажут.
Я видел это на криво настроенных серверах при экспорте-импорте дампа. И даже как бы не на никру это и было. Или на регру (я постоянно эти два кошмара путаю 🙂 )
Egor2015, я вот не даром писал
Убедиться что индексы-автоинкримент не побились.
🙂
- Тема «Ироглифы при создании новой записи» закрыта для новых ответов.