Skip to content

Instantly share code, notes, and snippets.

@iruslanalexan
Last active May 4, 2022 12:07
Show Gist options
  • Save iruslanalexan/0350faa8a73b9d3b6b277aea1ce29ab7 to your computer and use it in GitHub Desktop.
Save iruslanalexan/0350faa8a73b9d3b6b277aea1ce29ab7 to your computer and use it in GitHub Desktop.

Начать рассматривать вопрос по обновлению VMBitrix PHP и MySQL следует из https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=37&LESSON_ID=8831 Но я у себя на локальном не стал апгрейдить до MySql8 , зная о возможных потерях , которых удалось избежать, сделав бэкап из 5.7 в совместимый формат 8.0 и восстановив его на новый MySql8.0

Но речь, полагаю, не об апгрейде, а о конвертации

Вопреки устаревшему тезису tf8mb4 кодировка в Битриксе не поддерживается потребители бодро сообщают о том, что ничто не мешает переконвертить базу в эту кодировку. Сейчас у меня крутятся пара проектов в этой кодировке, проблем не наблюдаю

Есть небольшие риски для некоммерческих CMS Например по запросу mysql 5.7 utf8mb4 более-менее оптимистичные статьи, хотя и требующие мозгового штурма

Исходя из задачи, связанной с mysql5.7+bitrix+utf8mb4, многое с 2018 года - изменилось.

Для CMS Bitrix помимо советов как обновить версию, уже есть простые и прямые советы, ЧТО ДЕЛАТЬ

Я бы мог посоветовать к одному из опубликованных скриптов для конвертации лишь добавить свой код, и тогда скрипт для переноса можно было-бы запустить из консоли

$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__) . "/../../..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

@set_time_limit(0);
ini_set('memory_limit', '-1');

Состояние текущей БД

SHOW VARIABLES LIKE "%version%";

img_3.png

SHOW CHARACTER SET LIKE '%utf%';

img.png

For Schemas (or Databases - they are synonyms):

SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "portal"; img_1.png

For Tables:

SELECT DISTINCT CCSA.character_set_name FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "portal" -- AND T.table_name = "b_crm_act"; img_2.png

For Columns:

SELECT character_set_name FROM information_schema.`COLUMNS` WHERE table_schema = "schemaname" AND table_name = "portal" AND column_name = "title";

#Комментарии в пользу

Новый MySQL 8.0 перевёл весь мир на utf8mb4. Устанавливается по умолчанию. Думаю, что специалисты в MySQL понимают важность utf8mb4 и видят его развитие в будущем. Такие мировые лидеры как Wordpress абсолютно без проблем используют utf8mb4 и все рады! Нет никаких проблем с сортировкой, хранением, кодировкой. У нас же битрикс как обычно, свойственно отечественному производителю, пишет: "Мы не поддерживаем utf8mb4". И вечная проблема у людей до сих пор во всех форумах по битриксу с кодировками utf8, cp1251, какие -то вечные проблемы с обновлениями, шаблонами, эмодзи, которые так или иначе связаны с кодировками. Может уже приведёте всё в один стандарт? Все эти галочки при установке "установить в utf8 или нет"? ... Может потратите время и сделаете всё по уму в конце концов?? Может как -то будете немного стремиться туда, куда развивается весь мир или так и будем бесконечно решать проблемы с кодировками, эмодзи, сортировкой, кракозябрами .. вам самим не надоело? Реально это уже напрягает. источник

#Затруднения, которые могут возникнуть

-Например, если часть настроек не изменяется, тогда Для percona 5.7 конфиг ** my.cnf** может быть немного другой

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment