Ошибка с кодировкой бд и таблиц 1с Битрикс

Рейтинг: 0Ответов: 0Опубликовано: 23.08.2023

Разворачиваю сайт на CMS 1с Битрикс (Управление сайтом) на openServer.

  1. Сделал резервную копию в админ панели. Развернул сайт, всё работает.
  2. После запуска проверки системы появилась ошибка

Ошибка! Сравнение для базы (utf8_general_ci) отличается от сравнения для соединения (utf8_unicode_ci)

  1. Через админ панель битрикса прописал:

    ALTER DATABASE ИМЯ_БАЗЫ DEFAULT COLLATE utf8_unicode_ci;

  2. После повторной проверки системы появилась следующая ошибка:

Ошибка! Кодировки таблиц имеют ошибки, общее число ошибок: 3055, из них автоматически могут быть исправлены: 3055.

При нажатии на кнопку исправить появляется ошибка :

Кодировка соединения Ошибка! Кодировка соединения с базой данных должна быть utf8, текущее значение: utf8mb4

Проверил файлы after_connect_d7.php и after_connect.php в каждом присутствует запись

$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"');

в файле bitrix/modules/main/classes/general/site_checker.php изменил проверку на

if (defined('BX_UTF') && BX_UTF === true)
{
    if ($character_set_connection != 'utf8mb4')
        $strError = GetMessage("SC_CONNECTION_CHARSET_WRONG", array('#VAL#' => 'utf8', '#VAL1#' => $character_set_connection));
    elseif ($collation_connection != 'utf8mb4_unicode_ci')
        $strError = GetMessage("SC_CONNECTION_COLLATION_WRONG_UTF", array('#VAL#' => $collation_connection));
}

Это так же не помогло вылезла ошибка:

Ошибка! Кодировка соединения с базой данных должна быть utf8, текущее значение: utf8

  1. В базе стоит кодировка utf8_general_ci. Решил изменить кодировку у таблицы на utf8_unicode_ci и после проверки системы вылезла ошибка которая была ранее, но с меньшим кол-вом ошибок

Ошибка! Кодировки таблиц имеют ошибки, общее число ошибок: 3053, из них автоматически могут быть исправлены: 3053.

Следовательно данный метод помог насколько я понял.

  1. Решил изменить кодировку у всех таблиц.

Через phpMyAdmin следующим запросом. Чтобы вручную не менять кодировку у каждой таблицы, потому что их очень много.

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8_unicode_ci COLLATE utf8_general_ci;') as sqlcode
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'имя_базы'
ORDER BY 1

Появилась ошибка в phpMyAdmin

#1115 - Неизвестная кодировка 'utf8_unicode_ci'

Уточнение. В БД кодировка таблиц = utf8_general_ci

Вопрос

Почему возникает ошибка "Неизвестная кодировка 'utf8_unicode_ci'" и как ее исправить? Битрикс не воспринимает никакую кодировку кроме utf8_unicode_ci?

Ответы

Ответов пока нет.