Вроде бы достаточно простой вопрос, но за выходные не победил
В docker-compose.yml:
redmine:
image: redmine
db:
image: mysql:5.7
база создается с кодировкой latin1_swedish_ci и не позволяет создавать объекты с кириллицей.
Замена на для всей базы
ALTER DATABASE redmine CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ничего не дает - все таблицы остаются в latin1_swedish_ci
Если, например, вручную меняю в journals поле notes на utf8mb4_unicode_ci - то, конечно, комментарии сразу начинают сохраняться и в кириллице.
Параметр REDMINE_DB_ENCODING вроде бы и так по-умолчанию описан, как uft8
Не хочется верить, что надо сначала создать базу, а потом все поля/таблицы менять.
В гугле нашелся именно такой совет - разовой конвертации всех таблиц после создания базы.
Может как-то проще можно сразу создать базу так, чтобы все текстовые поля были в uft8?
Updated:
В итоге пришлось все-таки обойтись разовой конвертацией всех таблиц
Нелогично, но работает
mysql -u root -p --database=redmine -B -N -e "SHOW TABLES" | awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; SET foreign_key_checks = 1; "}' | mysql -u root -p --database=redmine
Updated2:
Для создания в utf8 помогла установка кодировки и сортировки сервера через command в контейнере mysql.
https://dev.mysql.com/doc/refman/8.0/en/charset-se...
db:
image: mysql:5.7
command:
- "--character-set-server=utf8"
- "--collation-server=utf8_general_ci"