[MDEV-19495] COLLATION Error Created: 2019-05-16  Updated: 2019-07-05  Resolved: 2019-07-05

Status: Closed
Project: MariaDB Server
Component/s: Character Sets
Affects Version/s: 10.2.24
Fix Version/s: N/A

Type: Bug Priority: Trivial
Reporter: Sergii Volikov Assignee: Alexander Barkov
Resolution: Not a Bug Votes: 0
Labels: None
Environment:

OS Window Server 2008 R2


Attachments: File db (1).opt     File db (10).opt     File db (11).opt     File db (2).opt     File db (3).opt     File db (4).opt     File db (5).opt     File db (6).opt     File db (7).opt     File db (8).opt     File db (9).opt     File db.opt    

 Description   

После установки версии 10.2.24 и после перезапуска службы в журнале приложений Windows получаю ошибку
COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1'
Сама служба не стартует.
Записей в файле ошибок (server.err) нет.
Если убрать запись "collation-server = utf8_unicode_ci" в my.ini, то служба успешно запускается, но мне нужно utf8_unicode_ci.
Прошу помочь решить.
В версии 10.2.23 проблем не было.



 Comments   
Comment by Vladislav Vaintroub [ 2019-05-16 ]

10.2.23 also does not like your collation-server.

Proof, from the fresh download

C:\Users\wlad\Downloads\mariadb-10.2.23-winx64\mariadb-10.2.23-winx64\bin>mysqld --console --collation-server=utf8_unicode_ci
2019-05-16 18:24:53 18264 [Note] mysqld (mysqld 10.2.23-MariaDB) starting as process 5932 ...
2019-05-16 18:24:53 18264 [ERROR] COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1'
2019-05-16 18:24:53 18264 [ERROR] Aborting

Comment by Vladislav Vaintroub [ 2019-05-16 ]

you need

character-set-server=utf8

in your my.ini

Comment by Sergii Volikov [ 2019-05-17 ]

character-set-server=utf8 - стоит по умолчанию.
Откатился на 10.2.23 - работает без замечаний.
Вот мой my.ini
[mysqld]
character-set-server=utf8
collation-server = utf8_unicode_ci
datadir=C:/Program Files/MariaDB 10.2/data
port=3306
innodb_buffer_pool_size=1024M
event_scheduler = ON
innodb_flush_log_at_trx_commit = 2
long_query_time = 60
slow_query_log = ON
query_cache_type = ON
query_cache_size = 16M
[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.2/lib/plugin
default-character-set = utf8

Comment by Vladislav Vaintroub [ 2019-05-17 ]

Я попробовал - все работает, причем одинаково в 10.2.23 и 10.2.24

По умолчанию ничего utf8 не стоит. в my.ini должно быть

[mysqld]
collation-server=utf8_unicode_ci
character-set-server=utf8

C:\Users\wlad\Downloads\mariadb-10.2.24-winx64\bin>mysql -uroot -e "show variables like '%server'"
-------------------------------------+

Variable_name Value

-------------------------------------+

character_set_server utf8
collation_server utf8_unicode_ci
Comment by Sergii Volikov [ 2019-05-17 ]

По умолчанию - это я выставил в my.ini.
Выше писал, что my.ini содержит:
[mysqld]
character-set-server=utf8
collation-server = utf8_unicode_ci
...
Не все так просто.
Проверил на пустой БД. Тоже нет проблем.
Еще раз детальнее о ситуации.
Есть база размером почти 7 ГБ. Работает на 10.2.23, проблем нет.
Обновляю версию до 10.2.24. Все нормально, проблем нет. Но стоит только остановить сервис MySql - больше его не удается запустить.
Если закомментировать строку collation-server=utf8_unicode_ci, то сервис запускается.
Подозреваю, что после обновления версии и запуска сервиса идет обновление таблиц под эту версию. Вот оно и вносит какие-то изменения в таблицы, после которых сервис уже не запускается.
С учетом того, что на пустой БД все работает без замечаний, проблема кроется объектах БД, которые я создаю.
Если на пустой БД (10.2.24) восстановить данные из бекапа, то все работает. mysql_upgrade выполняется без ошибок. Сервис перезапустил - все ок.
Похоже проблема в скриптах обновлений, которые запускаются после установки версии 10.2.24.
Что и как я еще могу проверить? Как определить на какой таблице (объекте) сервис подвисает? Есть возможность посмотреть детали по ошибке? Буду признателен за любую информацию, которая поможет устранить ошибку.

Comment by Alexander Barkov [ 2019-07-05 ]

Если закомментировать строчку collection-server=utf8_unicode_ci и запустить сервис, то что возвращает вот этот запрос:

SHOW VARIABLES LIKE 'char%';

?

Попробуйте активировать general log, добавив вот такую строчку в mysql.ini:

general-log

Возможно, удастся увидеть весь запрос в логе.

Запускается ли сервер в режиме standalone?
Вот тут описание:
https://dev.mysql.com/doc/refman/8.0/en/windows-start-command-line.html

Comment by Sergii Volikov [ 2019-07-05 ]

Без collection-server=utf8_unicode_ci
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir C:\Program Files\MariaDB 10.2\share\charsets\

Comment by Sergii Volikov [ 2019-07-05 ]

Если после обновления запустить в standalone дает ошибку COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1'
в логах ничего.
-Если закомментировать collection-server=utf8_unicode_ci в логах:
2019-07-05 10:47:42 7376 [Note] CONNECT: Version 1.06.0009 Jun 14 2019 21:52:00
2019-07-05 10:47:42 7376 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2019-07-05 10:47:42 7376 [Note] InnoDB: Uses event mutexes
2019-07-05 10:47:42 7376 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-07-05 10:47:42 7376 [Note] InnoDB: Number of pools: 1
2019-07-05 10:47:42 7376 [Note] InnoDB: Using SSE2 crc32 instructions
2019-07-05 10:47:42 7376 [Note] InnoDB: Initializing buffer pool, total size = 1G, instances = 8, chunk size = 128M
2019-07-05 10:47:42 7376 [Note] InnoDB: Completed initialization of buffer pool
2019-07-05 10:47:42 7376 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2019-07-05 10:47:42 7376 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2019-07-05 10:47:42 7376 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2019-07-05 10:47:43 7376 [Note] InnoDB: Starting shutdown...
2019-07-05 10:47:43 7376 [ERROR] Plugin 'InnoDB' init function returned error.
2019-07-05 10:47:43 7376 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-07-05 10:47:43 7376 [Note] Plugin 'FEEDBACK' is disabled.
2019-07-05 10:47:43 7376 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-07-05 10:47:43 7376 [ERROR] Aborting-

Comment by Alexander Barkov [ 2019-07-05 ]

То есть если запустить `mysqld.exe --standalone`, то пишет только эту ошибку про COLLECTION и больше ничего?
Ни в general log, ни в error log тоже ничего не дописывается?

Comment by Sergii Volikov [ 2019-07-05 ]

если имеется ввиду файл "C:\mysqld.trace", то его нет. В файле server.err ничего нет. Возможно, нужно нужно было под админом запускать?
у меня есть подозрения, что эксперимент был не совсем чистым (правильным). Проверю все наново - сообщу.

Comment by Vladislav Vaintroub [ 2019-07-05 ]

There is no mysqld.trace with release binary. the option --standalone does exactly nothing.
if you want to have the output to the command line, stop the service, and run mysqld --console (use Ctrl-C to stop mysqld then, if it is running).

Comment by Sergii Volikov [ 2019-07-05 ]

В логах ничего нет. В консоле ошибка
C:\Program Files\MariaDB 10.2\bin>mysqld --defaults-file=..\data\my.ini --standalone
2019-07-05 14:00:29 2876 [Note] mysqld (mysqld 10.2.25-MariaDB-log) starting as process 5884 ...
2019-07-05 14:00:29 2876 [ERROR] COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1'
2019-07-05 14:00:29 2876 [ERROR] Aborting

Comment by Alexander Barkov [ 2019-07-05 ]

А если запустить так:

mysqld --defaults-file=..\data\my.ini --standalone --character-set-server=utf8

Можно приаттачить к этому MDEV Ваш my.ini ?

More -> Attach files

Еще такой момент:
У Вас много разных баз данных.
Интересно взглянуть на все файлы `..\data*\db.opt`

Comment by Vladislav Vaintroub [ 2019-07-05 ]

C:\Program Files\MariaDB 10.2\bin>mysqld --console
should work fine.
I really doubt there will be any error pertinent to --console, if you start it like this
you're already using the default my.ini file, you do not need --default-file, I guess

Comment by Sergii Volikov [ 2019-07-05 ]

проблема с collation-server = utf8_unicode_ci
Если убрать его, то запуск проходит без ошибок. Аналогично mysqld --defaults-file=..\data\my.ini --standalone --character-set-server=utf8
В my.ini важна только строка collation-server = utf8_unicode_ci. Если ее убрать ошибки тоже нет.
У меня такое впечатление, что в версиях 10.2.24 и выше убрали сопоставление utf8_unicode_ci ?

Comment by Sergii Volikov [ 2019-07-05 ]

db.opt db (1).opt db (2).opt db (3).opt db (4).opt db (5).opt db (6).opt db (7).opt db (8).opt db (9).opt db (10).opt db (11).opt

Comment by Sergii Volikov [ 2019-07-05 ]

mysqld --defaults-file=..\data\my.ini --standalone --character-set-server=utf8
Запускается без ошибок.
Добавил в my.ini character-set-server=utf8
Ошибок нет!
Спасибо!!!

Generated at Thu Feb 08 08:52:08 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.