Поддержка Проблемы и решения Ироглифы при создании новой записи

  • При создании новой записи вся админка становится ироглифами, типа:
    Добавить запись

    И такое предупреждении:
    Warning: Creating default object from empty value in /home/…………./docs/wp-admin/includes/post.php on line 642

    Два дня назад обновляли WordPress с 4.3 до 4.9.1 обновления проходили успешно.
    Увидев страницу с ироглифами отключил все плагины и тему заменил на дефолтную, не помогло.

    • Тема изменена 6 лет, 2 месяца назад пользователем Egor2015.
    • Тема изменена 6 лет, 2 месяца назад пользователем Egor2015.
Просмотр 14 ответов — с 16 по 29 (всего 29)
  • Возможно поможет такой финт
    1. Взять этот дамп и в правильном блокноте открыть в 1251 (проверить отсутствие кроказяб) и пересохранить в UTF8.
    Вероятность что не будет крокозаб низка, но вдруг.

    Если поможет, то дальше:
    2. Создать БД в правильной кодировке.
    3. Настроить хостинг (а лучше сменить на нормальный. И его настроить 😉 )
    4. Залить этот дамп (изменив в нём кодировку таблиц). Убедиться что индексы-автоинкримент не побились.
    5. В конфиге ВП подключить эту БД.

    Но надежнее всего — переделать сайт используя импорт-экспорт контента.

    php-ворнинг и кривая кодировка базы никак не связаны.
    данным ворнингом гугл забит — рекомендую просто погуглить ошибку и найти подходящее решение.

    Это все конечно интересно, только мне что делать.
    Я готов согласно инструкции (ссылку выше дал) таблицы переделать на UTF-8 в них 4 только таблицы где встречается CHARSET=cp1251 больше нет.
    Только не испортит ли мне базу, и какой толк менять эти таблицы, как я понял таблицы на плагины ссылаются, которые я все равно отключаю?

    4 таблицы где нужно предположительно изменить CHARSET=cp1251:

    DROP TABLE IF EXISTSwp_WP_SEO_404_links`;
    CREATE TABLE IF NOT EXISTS wp_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 EXISTS wp_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 EXISTS wp_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 EXISTS wp_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 лет, 2 месяца назад пользователем Egor2015.

    php-ворнинг и кривая кодировка базы никак не связаны.

    Скорее всего так и есть. В стартпосте возможно 2е разные проблемы. Если только $post_type не был как-то задан кириллицей. Это вроде ВП не даст, но если в руками лазили в базу, то и не такое возможно.

    Кстати, лог ошибок php смотрели?

    Я сделал так: define(‘WP_DEBUG’, 1); — дать возможность админке показывать ошибки

    В результате на экране:
    WordPress: [Duplicate entry ‘0’ for key ‘PRIMARY’]
    INSERT INTO wp_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 лет, 2 месяца назад пользователем Egor2015.
    Модератор Yuri

    (@yube)

    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 лет, 2 месяца назад пользователем Yuri. Причина: p.s

    Юрий просто супер вы, огромное спасибо!!!

    1. Ваш пункт первый сделал и заработали новые записи и страницы.
    Для комментариев поставил галочку на auto_increment и тоже они заработали.

    2. табе «операции» — значение AUTO_INCREMENT — Это нашел и цифра стоит, но не понял с чем сравнить((( в каком месте другая цифра.

    А то я уже отчаялся было)

    • Ответ изменён 6 лет, 2 месяца назад пользователем Egor2015.
    Модератор Yuri

    (@yube)

    в каком месте другая цифра.

    Ее можно «спросить» (таб SQL):
    select max(id) from wp_posts

    Нашел: max(id) 2434, а AUTO_INCREMENT 2435
    то есть больше, все ок?

    И так «спрашивать» у всех таблиц?

    AUTO_INCREMENT во всех таблицах буду ставить галки.

    • Ответ изменён 6 лет, 2 месяца назад пользователем Egor2015.
    • Ответ изменён 6 лет, 2 месяца назад пользователем Egor2015.
    Модератор Yuri

    (@yube)

    Нашел: 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’

    Подобные таблицы пропускаю, иду дальше.

    Модератор Yuri

    (@yube)

    Я имел в виду таблицы, в которых он должен быть.

    см. схему таблиц в инсталляторе или поставьте где-то WP с нуля и с ним сравнивайте.

    Понял, большое спасибо!

    Я знаю только две: сбой железа и кто-то очень неумело поковырялся. Возможно, коллеги еще подскажут.

    Я видел это на криво настроенных серверах при экспорте-импорте дампа. И даже как бы не на никру это и было. Или на регру (я постоянно эти два кошмара путаю 🙂 )

    Egor2015, я вот не даром писал

    Убедиться что индексы-автоинкримент не побились.

    🙂

Просмотр 14 ответов — с 16 по 29 (всего 29)
  • Тема «Ироглифы при создании новой записи» закрыта для новых ответов.