Ошибка с кодировкой бд и таблиц 1с Битрикс
Разворачиваю сайт на CMS 1с Битрикс (Управление сайтом) на openServer.
- Сделал резервную копию в админ панели. Развернул сайт, всё работает.
- После запуска проверки системы появилась ошибка
Ошибка! Сравнение для базы (utf8_general_ci) отличается от сравнения для соединения (utf8_unicode_ci)
Через админ панель битрикса прописал:
ALTER DATABASE ИМЯ_БАЗЫ DEFAULT COLLATE utf8_unicode_ci;
После повторной проверки системы появилась следующая ошибка:
Ошибка! Кодировки таблиц имеют ошибки, общее число ошибок: 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
- В базе стоит кодировка utf8_general_ci. Решил изменить кодировку у таблицы на utf8_unicode_ci и после проверки системы вылезла ошибка которая была ранее, но с меньшим кол-вом ошибок
Ошибка! Кодировки таблиц имеют ошибки, общее число ошибок: 3053, из них автоматически могут быть исправлены: 3053.
Следовательно данный метод помог насколько я понял.
- Решил изменить кодировку у всех таблиц.
Через 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?