我一直试图使用官方图像在Docker容器中运行一个MySQL数据库。我可以运行所有的一切,但我有一个插入口音的问题。
问题是我不能在MySQL REPL上插入重音(或者CLI、shell或.我不知道如何调用它;我的意思是在哪里看到mysql>提示符)。尽管如此,我仍然可以退出到主Linux (提示#)并正常插入重音。
我知道UTF8 8不可靠在MySQL,所以我试着设置utf8mb4。我所做的角色设置是:
mysql> set names utf8mb4;
mysql> set character_set_database=utf8mb4;
mysql> set character_set_server=utf8mb4;
mysql> set character_set_system=utf8mb4;你可以看到我所拥有的
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)谢谢。
发布于 2017-05-05 17:58:53
我终于找到了解决办法。问题可能是我只是为数据库设置utf8mb4,而不是为mysqld守护进程设置。
不管怎么说,我把我做的东西放在这里。我首先创建了一个Dockerfile:
FROM mysql:latest
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
&& localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8
COPY conf.d/ /etc/mysql/conf.d/
ENV MYSQL_ROOT_PASSWORD pass
ENV MYSQL_DATABASE gastos如您所见,我复制了我刚创建的conf.d .d目录。在这个目录中有一个character_set.cnf文件:
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci发布于 2018-09-03 04:45:42
ENV LANG=C.UTF-8似乎是上游修复程序,它不需要生成en_US.utf8
https://dba.stackexchange.com/questions/172739
复制相似问题