The Collation health check has failed in your system
Такое сообщение выдала Jira, спустя какое-то время после установки. Это было из-за того, что база и пользователь были созданы штатными средствами панели Plesk (то же самое получилось бы и во многих других случаях), и база данных с таблицами в ней получили сопоставление, которое использовалось в Mysql по-умолчанию: “utf8_general_ci”.
Уже были созданы пользователи, задачи и работа шла полных ходом. При этом каких-то проблем в работе не было, однако, согласно этому источнику, лучше исправить эту ошибку. Система рекомендует использовать для базы данных и таблиц в ней – сопоставление “utf8_bin”
Как проверить кодировку базы данных и таблиц Jira в Mysql?
Коннектимся к базе текущим пользователем Jira:
# mysql -u jirauser -p
Потом выбираем базу данных:
mysql> use jiradb;
Database changed
Проверяем базу:
mysql> SELECT default_collation_name
FROM information_schema.schemata S
WHERE schema_name = (SELECT DATABASE()
FROM DUAL);
+------------------------+
| default_collation_name |
+------------------------+
| utf8_general_ci |
+------------------------+
1 row in set (0,00 sec)
Проверяем таблицы:
mysql> SELECT DISTINCT C.collation_name, T.table_name FROM information_schema.tables AS T, information_schema.`collation_character_set_applicability` AS C WHERE C.collation_name = T.table_collation AND T.table_schema = DATABASE();
...
| utf8_general_ci | qrtz_calendars |
| utf8_general_ci | qrtz_cron_triggers |
| utf8_general_ci | qrtz_fired_triggers |
| utf8_general_ci | qrtz_job_details |
| utf8_general_ci | qrtz_job_listeners |
| utf8_general_ci | qrtz_simple_triggers |
| utf8_general_ci | qrtz_trigger_listeners |
| utf8_general_ci | schemepermissions |
| utf8_general_ci | searchrequest |
| utf8_general_ci | serviceconfig |
| utf8_general_ci | sharepermissions |
| utf8_general_ci | tempattachmentsmonitor |
| utf8_general_ci | trackback_ping |
| utf8_general_ci | trustedapp |
| utf8_general_ci | upgradehistory |
...
Да, действительно, проблема есть.
Смена кодировки базы данных и таблиц Jira в Mysql
В документации Jira написано, что нужно создать вторую базу с нужно кодировкой, и скопировать все таблицы в неё. Однако, это неудобный способ. После этого придётся перенастраивать Jira через bin/config.sh (который требует для запуска java, а у нас только консольный сервер) или создавать файл dbconfig.xml , которого нет изначально и нельзя просто отредактировать его, чтобы поменять имя базы данных. Поэтому вот лучший способ:
1. Останавливаем Jira сервер:
# /etc/init.d/jira stop
2. Делаем дампы базы (один – будет резервный):
# mysqldump -u jirauser -p jiradb > jiradb.sql
# mysqldump -u jirauser -p jiradb > jiradb_backup.sql
3. Заменяем “CHARSET=utf8” на “CHARSET=utf8 COLLATE=utf8_bin” во первом дампе с помощью вашего любимого текстового редактора (вполне подойдёт nano):
# nano epic_jira.sql
4. Коннектимся рутом в mysql (мы на сервере под управлением Plesk Onyx, поэтому такая чудная команда):
mysql -uadmin -p`cat /etc/psa/.psa.shadow`
5. Удаляем базу:
mysql> DROP DATABASE jiradb;
6. Создаём новую базу с нужной кодировкой “utf8_bin”:
CREATE DATABASE epic_jira CHARACTER SET utf8 COLLATE utf8_bin;
7. Даём права пользователю (на всякий случай):
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on jiradb.* TO 'jirauser'@'localhost' IDENTIFIED BY 'PaSSwoRD12345';
flush privileges;
8. Также, можно проверить привилегии:
mysql> SHOW GRANTS FOR jrepicint@localhost;
9. Далее, в консоли заливаем базу:
# mysql -uadmin -p`cat /etc/psa/.psa.shadow` -h localhost jiradb < jiradb.sql
10. Запускаем Jira сервер:
# /etc/init.d/jira start
Можно также проверить кодировки, как описывалось вначале. В любом случае, вы увидите состояние базы, если зайдёте по адресу:
http://ваш-jira-сервер/plugins/servlet/stp/view/?source=notification