forum.bitel.ru
http://forum.bitel.ru/

upgrade 6.0 to 6.2 (CRM:CLOSED)
http://forum.bitel.ru/viewtopic.php?f=22&t=11798
Страница 1 из 1

Автор:  ok-2004 [ 19 июл 2016, 18:21 ]
Заголовок сообщения:  upgrade 6.0 to 6.2

Доброе время суток!
Решил тут попробовать сабж.
Встретил одну непонятку...
моя база в cp1251.

В "Инструкции по обновлению с 3.5-6.1 до 6.2" читаем:
"... Там теперь characterEncoding=UTF-8 вместо cp1251. Но надо указать cp1251, если в вашей базе данных такая кодировка ...Если БД у вас в cp1251, то connectionCollation нужно указать соответствующий правильный (или удалить)"

в update_6.2.zip в patch.sql есть статемент:

Код:
CREATE TABLE `contract_payment_deleted`
.....
comment` varchar(200) COLLATE utf8_unicode_ci
.....


Как-то странно для cp1251 иметь такую collate , не ?

Автор:  barguzin2 [ 19 июл 2016, 18:32 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2

Не, просто крайне рекомендуется перевести базу в UTF-8. Ну и не зря же написано "... Там теперь characterEncoding=UTF-8 вместо cp1251"

Автор:  ok-2004 [ 19 июл 2016, 20:08 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2

"крайне рекомендуется" не тоджественно "обязательно".
Если разработчики оставили свободу выбора , то ей следует придерживаться до конца.
тем более если в db.opt уже стоит
Код:
default-character-set=utf8
default-collation=utf8_unicode_ci

то зачем дублировать это в patch.sql ?

Более того : в этом файле туча статеметнов "create table" и только в одном месте указывается явно collation
Зачем ??
у меня как раз на том месте апргрейд и сбойнул....

P.S. прелесть от базы в utf8 тоже весьма сомнительна, кроме гемороя при конвертации с помощью alter table. ( Кроме туманных переспектив охватить рынок ACP по всему миру.) Хотя если уж на то и пошло - то сразу надо было рекомендовать utf8mb4, чего мелочиться.

Автор:  skyb [ 19 июл 2016, 21:01 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2

ох, был холивар про кодировки, если он, то лучше туда =)

Автор:  ok-2004 [ 20 июл 2016, 01:24 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2

ok!
Не надо никакого холивара!
Кто спорит ? utf8 так utf8...
Тем более конвертация проще простого :
Код:
alter table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci + alter database bgbilling DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_unicode_ci

Но вся изюмина в том что после ТАКОЙ конвертации структура полей конвертнутой базы НЕ СООТВЕТСТВУЕТ структуре полей базы в dump.sql!
Потому, что все типы TEXT и VARCHAR перетекли в MEDIUMTEXT со всеми вытекающими последствиями: отсутствие DEFAULT vlaues и необходимость задания длины индекса.
И как это скажется при следующих обновлениях - никому не известно.

Корректнее было бы к текстовым полям таблиц делать:
Код:
ALTER TABLE  MODIFY text_column CHARACTER SET utf8 + ALTER TABLE DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci.

Тогда типы полей сохраняются но , количество символов в поле уменьшается в 3 раза ( в худшем случае , во всяком случае mysql при конвертации всегда резервирует 3 , хотя cp1251-символ в
представлении utf8 продолжает храниться в одном байте)

В итоге : конвертнуть базу из cp1251 в utf8 полноценно не получится. А раз так - тогда зачем конвертить ?.
Пусть остаётся в cp1251...
Но patch.sql в upgrade_6.x.zip рушит эту возможность явным заданием во вновь создаваемых таблицах типа сортировки unicode_ci, которая не может быть в cp1251.

Автор:  barguzin2 [ 20 июл 2016, 08:25 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2

Менять кодировку или нет - дело, конечно, сугубо индивидуальное. Отвечу просто откуда ноги растут: с 6.1 UTF-8 идёт кодировкой по умолчанию и при разворачивании системы с нуля будет именно она. При снятии дампа с таблиц, имеющих COLLATE utf8_unicode_ci - этот самый COLLATE подставляется АВТОМАТИЧЕСКИ! Вот так он и попал в patch.sql как есть. И еще неизвестно куда и когда попадёт и при каких обновлениях можно поймать грабли, если оставить cp1251.

Автор:  stark [ 22 июл 2016, 19:54 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2

Мы не заставляем конвертировать в utf8. Как раз для старых клиентов при обновлении можно не конвертировать. Для тех кто ставит с нуля - utf8.
В patch.sql ошибка - исправим, недавно добавили .

Автор:  stark [ 25 июл 2016, 15:09 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2 (CRM)

исправили.

Автор:  dimOn [ 20 ноя 2017, 20:06 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2

ok-2004 писал(а):
Хотя если уж на то и пошло - то сразу надо было рекомендовать utf8mb4, чего мелочиться.

Вы были правы. На самом деле кодировка единственно правильная для mysql это utf8mb4, с этого времени она рекомендуется, доки и скрипты поправим.

Автор:  ok-2004 [ 20 ноя 2017, 20:30 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2 (CRM)

Код:
с этого времени она рекомендуется, доки и скрипты поправим.

Хм, правильно ли я понял что Вы решили перейти на эту кодировку начиная с BGB 7.2 ?

ЗЫ:
Будте готовы к возможным сокращениям длины PRIMARY KEY в "contract_parameter_type_multilist_item" и UNIQUE KEY в "address_house"

Автор:  dimOn [ 20 ноя 2017, 21:05 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2 (CRM)

Ну вообще 7.1 думали, а что, это критичные изменения? В самом биллинге особо ничего не меняется. Только дамп создания и дефолтный data.properties и вроде всё. Работать будет и с 1251 кому захочется.

Про сокращения длины подробнее поясните.

Автор:  stark [ 21 ноя 2017, 13:02 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2 (CRM)

Нет, 7.1 скорее всего не будем трогать.

Автор:  dimOn [ 21 ноя 2017, 13:08 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2 (CRM)

ой

Автор:  Phricker [ 21 ноя 2017, 13:13 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2 (CRM)

увы

Автор:  barguzin2 [ 16 апр 2019, 16:15 ]
Заголовок сообщения:  Re: upgrade 6.0 to 6.2

stark писал(а):
Мы не заставляем конвертировать в utf8. Как раз для старых клиентов при обновлении можно не конвертировать. Для тех кто ставит с нуля - utf8.
В patch.sql ошибка - исправим, недавно добавили .

stark писал(а):
исправили.


update_7.1.zip patch.sql
Цитата:
CREATE TABLE `contract_payment_deleted` (
`id` int(11) NOT NULL DEFAULT '0',
`dt` date NOT NULL DEFAULT '0000-00-00',
`cid` int(10) unsigned NOT NULL DEFAULT '0',
`pt` int(10) unsigned NOT NULL DEFAULT '0',
`uid` int(11) NOT NULL DEFAULT '0',
`summa` decimal(10,2) NOT NULL,
`comment` varchar(200) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`lm` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`time_change` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `pt_dt` (`pt`,`dt`),
KEY `dt_cid` (`dt`,`cid`),
KEY `uid` (`uid`),
KEY `cid_dt` (`cid`,`dt`)
);


Обновляю 6.2 на 7.1, база в кодировке 1251. Хотя таблица уже есть и поле с такой же кодировкой. кто-то ранее на 6.2 уже обновлял....

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/