BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 18 июн 2025, 15:06

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 23 ] 
Автор Сообщение
 Заголовок сообщения: Illegal mix of collation в истории параметра
СообщениеДобавлено: 23 авг 2016, 19:16 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
При просмотре истории спискового параметра на договоре выскочила такая ошибка:
Вложение:
Illegal mix of collations.png
Illegal mix of collations.png [ 12.4 КБ | Просмотров: 11654 ]

В логах сервера такое:
Код:
08-23/16:10:17 ERROR [http-bio-127.0.0.1-8080-exec-9] CommonExecutor - java.sql.SQLException: Illegal mix of collations for operation 'concat'
ru.bitel.bgbilling.common.BGException: java.sql.SQLException: Illegal mix of collations for operation 'concat'
    at bitel.billing.server.contract.bean.ContractParameterManager.getParameterHistory(ContractParameterManager.java:2712)
    at bitel.billing.server.contract.action.ActionGetParameterHistory.doAction(ActionGetParameterHistory.java:30)
    at bitel.billing.server.Executer.doModule(SourceFile:600)
    at bitel.billing.server.Executer$1.run(SourceFile:199)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at bitel.billing.server.Executer.doPost(SourceFile:193)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at ru.bitel.common.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:54)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: Illegal mix of collations for operation 'concat'
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2212)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    at bitel.billing.server.contract.bean.ContractParameterManager.getParameterHistory(ContractParameterManager.java:2682)

С обновленным биллингом работаем уже месяц и никаких проблем с кодировкой замечено не было.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 авг 2016, 19:39 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
всё из about

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 авг 2016, 19:52 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Код:
Информация о версии:

  Клиент: вер. 6.2.826 / 24.06.2016 16:17:38
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
  Сервер: вер. 6.2.1077 / 06.07.2016 19:20:23
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91

  assist: вер. 6.2.86 / 27.04.2016 13:58:46
  bill: вер. 6.2.87 / 10.06.2016 13:28:18
  card: вер. 6.2.39 / 26.05.2016 14:50:45
  dialup: вер. 6.2.315 / 01.03.2016 00:17:59
  email: вер. 6.2.176 / 01.03.2016 00:18:32
  inet: вер. 6.2.668 / 04.07.2016 16:59:27
  ipn: вер. 6.2.259 / 06.07.2016 19:29:33
  mps: вер. 6.2.210 / 06.07.2016 19:00:12
  npay: вер. 6.2.195 / 24.06.2016 16:25:14
  reports: вер. 6.2.209 / 06.06.2016 12:43:49
  rscm: вер. 6.2.177 / 10.06.2016 13:40:20
  ru.bitel.bgbilling.plugins.bonus: вер. 6.2.117 / 06.07.2016 18:56:27
  ru.bitel.bgbilling.plugins.crm: вер. 6.2.192 / 01.06.2016 00:38:35
  ru.bitel.bgbilling.plugins.dispatch: вер. 6.2.84 / 24.03.2016 12:20:30
  ru.bitel.bgbilling.plugins.helpdesk: вер. 6.2.181 / 14.06.2016 14:50:40
  ru.bitel.bgbilling.plugins.organizer: вер. 6.2.71 / 01.03.2016 00:18:34
  voiceip: вер. 6.2.190 / 03.03.2016 18:32:27
  wm: вер. 6.2.179 / 28.06.2016 22:32:46

Окружение:

  Клиент:
    os: Windows 7 amd64, 6.1
    java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
    jre home: c:\Program Files\Java\jdk1.8.0_65\jre
    default tz: 23.08.2016 16:51 MSK +0300 (Europe/Moscow)
    user tz: 23.08.2016 16:51 MSK +0300 (Europe/Moscow)
    locale: ru_RU
  Сервер:
    os: Linux amd64, 2.6.32-504.23.4.el6.x86_64
    java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91
    jre home: /opt/jdk1.8.0_91/jre
    default tz: 23.08.2016 16:51 MSK +0300 (Europe/Moscow)
    db time: master: 23.08.2016 16:51 MSK
    db charset: connection: cp1251(cp1251_general_ci), database: cp1251(cp1251_general_ci)
    locale: en_US
    uptime: Started: 18.08.2016 18:56:45 Uptime: 4 d 21:54:56

Третьи стороны:

  Fugue Icons. Copyright © 2011 Yusuke Kamiyamane. All rights reserved.
    http://p.yusukekamiyamane.com/
  Silk icon set. Copyright © Mark James. All rights reserved.
    http://www.famfamfam.com/lab/icons/silk/

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 авг 2016, 00:00 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
show create table contract_parameter_type_7_log


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 авг 2016, 13:01 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Цитата:
CREATE TABLE `contract_parameter_type_1_log` (
`cid` int(11) NOT NULL,
`pid` int(11) NOT NULL,
`val` varchar(255) DEFAULT NULL,
`dt_change` datetime NOT NULL,
`user_id` int(11) NOT NULL,
KEY `cid_pid` (`cid`,`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 авг 2016, 13:29 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну вот там у вас потому что DEFAULT CHARSET=latin1, но почему так получилось - тут сложно сказать.
в contract_parameter_type_7_log которую у вас попросили - тоже скорее всего то же самое, просто только с типом параметра 7 делается concat который вызывает эту проблему

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 авг 2016, 13:33 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
остальные табоицы проверьте, почему на некоторых latin1? у вас раньше была дефолт чарсет на БД такая а потом вы поменяли?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 авг 2016, 13:39 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Код:
show table status


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 авг 2016, 14:55 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Код:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION FROM information_schema.tables WHERE table_schema = DATABASE() AND table_collation != 'cp1251_general_ci';
+--------------+-------------------------------+-------------------+
| TABLE_SCHEMA | TABLE_NAME                    | TABLE_COLLATION   |
+--------------+-------------------------------+-------------------+
| bgbilling    | billing_event_bus             | latin1_swedish_ci |
| bgbilling    | contract_comment_patterns     | latin1_swedish_ci |
| bgbilling    | contract_module               | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_1_log | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_3_log | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_4_log | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_5_log | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_6_log | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_7_log | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_8_log | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_9     | latin1_swedish_ci |
| bgbilling    | contract_parameter_type_9_log | latin1_swedish_ci |
| bgbilling    | contract_pattern_modules      | latin1_swedish_ci |
| bgbilling    | global_script                 | latin1_swedish_ci |
| bgbilling    | ip_resource_range_15          | latin1_swedish_ci |
| bgbilling    | ipn_gate_contract_port_15     | latin1_swedish_ci |
| bgbilling    | ipn_gate_rule_15              | latin1_swedish_ci |
| bgbilling    | ipn_gate_vlan_15              | latin1_swedish_ci |
| bgbilling    | login_parameter_1             | latin1_swedish_ci |
| bgbilling    | login_parameter_16            | latin1_swedish_ci |
| bgbilling    | login_parameter_log_1         | latin1_swedish_ci |
| bgbilling    | payment_robokassa             | utf8_general_ci   |
| bgbilling    | register_problem_log          | latin1_swedish_ci |
| bgbilling    | script_lib                    | latin1_swedish_ci |
| bgbilling    | sql_patches_history           | latin1_swedish_ci |
| bgbilling    | sql_template                  | latin1_swedish_ci |
| bgbilling    | tariff_option                 | latin1_swedish_ci |
+--------------+-------------------------------+-------------------+

Что было раньше и как пришли к текущему состоянию уже неизвестно.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 авг 2016, 20:45 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Как безопасно исправить кодировку таблиц?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 авг 2016, 23:29 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
для одной таблицы, как то так...

Код:
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;


ну и проверить кодировку базы и при необходимости поменять

Код:
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 авг 2016, 13:24 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
я скрипт писал и пару баз успешно конвертнул им, где-то здесь был и кто-то исправления там делал, исходная версия на гитхабе есть: https://raw.githubusercontent.com/darkb ... ql2utf8.sh

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 авг 2016, 13:54 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Спасибо, буду пробовать.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 сен 2016, 16:42 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Пытаюсь конвертить таким запросом:
Код:
ALTER TABLE billing_event_bus CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;

но реально ничего не изменяется и SHOW CREATE TABLE показывает старую кодировку. В чём может быть проблема?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 сен 2016, 16:46 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
а запрос что возвращает?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 сен 2016, 16:53 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Код:
MariaDB [dcbilling]> SHOW CREATE TABLE billing_event_bus;
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table             | Create Table                                                                                                                                                                                                                                  |
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| billing_event_bus | CREATE TABLE `billing_event_bus` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `event` longblob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [dcbilling]> ALTER TABLE billing_event_bus CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;           Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [dcbilling]> SHOW CREATE TABLE billing_event_bus;
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table             | Create Table                                                                                                                                                                                                                                  |
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| billing_event_bus | CREATE TABLE `billing_event_bus` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `event` longblob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [dcbilling]>

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 сен 2016, 16:54 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
0 rows affected (0.00 sec)
вот так не должно быть вроде как

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 сен 2016, 17:32 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Добавил ещё запрос
Код:
ALTER TABLE billing_event_bus CHARACTER SET cp1251 COLLATE cp1251_general_ci;

и всё пошло. Т. е. помимо конвертации нужно ещё и дефолтную кодировку установить.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 сен 2016, 17:42 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
хммм, странно

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 сен 2016, 13:11 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
dimOn писал(а):
хммм, странно


Похоже, что дело в MariaDB. Попробовал конвертировать таблицы на тестовом биллинге с MySQL базой и после запроса
Код:
ALTER TABLE contract_parameter_type_1_log CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;

SHOW CREATE TABLE начала сразу показывать правильную кодировку.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 сен 2016, 13:49 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
Мария становится всё страннее и страннее. За год метания между перконой-ораклом-марией пришёл к выводу , что Мария - конструктор, не более.
Засосать в себя все что делается другими, добавить своих красивых наработок и получить на выходе несовместимый со стоковым мускулем даже по командам DML.

А теперь по теме ТС:

Скрипт от dimOn прекрасен своей каноничностью, если не принимать во внимание изменение типа текстовых данных при такой конвертации. Как отразится на базе БЖБ при работе и обновлениях то , что CHAR/VARCHAR/TEXT/BLOB стали вдруг MEDIUM/LONGTEXT - никому не ведомо.

Если у Вас есть возможность "стопорнуть" базу - то самым правильным способом при конвертации будет использовать одну интересную фичу mysqldump при запуске с привилегиями mysql-root. Вот так например можно с cp1251 перейти на utf8:
Код:
#!/bin/bash
mysql -u root -ppassword --skip-column-names -e "SELECT table_name FROM information_schema.tables WHERE table_schema = 'bgbilling';" > /tmp/bgb_tables.txt
while read line ; do
echo "SET autocommit=0;SET unique_checks=0;SET foreign_key_checks=0;" > "/tmp/$line"
mysqldump -uroot -ppasword \
--max_allowed_packet=100M \
--skip-opt \
--single-transaction \
--flush-logs \
--order-by-primary \
--create-options \
--quick \
--skip-set-charset \
--log-error=/tmp/$line.dump \
--skip-extended-insert \
--default-character-set=utf8 \
bgbilling $line  >> /tmp/$line
echo "show warnings;SET autocommit=1;" >> "/tmp/$line"
done < /tmp/bgb_tables.txt
#
echo "DROP DATABASE bgbilling;" > /tmp/pre_bgb.sql
echo "CREATE DATABASE bgbilling DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;" >> /tmp/pre_bgb.sql
#
mysql -uroot -ppassword  < /tmp/pre_bgb.sql
#
while read line1 ; do
sed -e 's/DEFAULT CHARSET=cp1251/DEFAULT CHARSET utf8 COLLATE utf8_unicode_ci/g' -i /tmp/$line1
mysql -uroot -ppassword -vvv --max_allowed_packet=100M  --init-command="SET NAMES utf8" bgbilling < /tmp/$line1  2>&1 > /tmp/$line1.rest
done < /tmp/bgb_tables.txt
#
exit 0


Заодно и примари-индексы перестроите и таблицы дефрагментируете. А повырезав строчки из /tmp/bgb_tables.txt перед запуском обратного процесса - избавитесь от лишних таблиц-логов.

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 сен 2016, 14:17 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну так-то скрипт от dimon делает то же, что делали очень многие при конвертации: просто CONVERT TO CHARACTER итд...

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 сен 2016, 14:45 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
ok-2004 писал(а):
Как отразится на базе БЖБ при работе и обновлениях то , что CHAR/VARCHAR/TEXT/BLOB стали вдруг MEDIUM/LONGTEXT - никому не ведомо.

После конвертации моего небольшого набора таблиц с неправильной кодировкой при работающем биллинге, ничего страшного не произошло. При этом ошибки исчезли и в логе изменения параметров всё стало отображаться правильно (для новых записей, старые так и остались с вопросами).

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

Тут больше интересно другое - как я мог не заметить раньше проблему с кодировкой таблиц. Ведь историю для некоторых параметров я веду довольно давно и при включении истории всегда проверял, как это всё работает. Подозреваю, что что-то могло поломаться при переходе на MariaDB, который как раз произошёл пару месяцев назад.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.064s | 64 Queries | GZIP : On ]