当我保存中文字符串时,mysql出现错误"Exception Value:
(1366,“第1行的'name‘列的字符串值不正确:'\xE5\xB0\x8F\xE6\x98\x8E’)”)“,我检查了mysql的字符,显示如下:
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)我的docker-compose.yml是as伙伴:
web:
image: yetongxue/docker_test:1.2
links:
- "db"
ports:
- "8100:8000"
volumes:
- "/Users/yetongxue/docker_v/docker_test/media:/root/media"
restart: always
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: qwerasdf
MYSQL_DATABASE: docker_db
restart: always
volumes:
- "/Users/yetongxue/docker_v/docker_test/db:/var/lib/mysql"我知道如何使用my.cnf设置mysql的字符,但是如何在docker-compose.yml中设置?有人知道这个吗?谢谢!
发布于 2018-05-25 20:33:59
您可以在修改my.cnf的地方构建自己的mysql镜像,也可以修改启动mysql守护进程的命令。
和
..。
web:
image: yetongxue/docker_test:1.2
links:
- "db"
ports:
- "8100:8000"
volumes:
- "/Users/yetongxue/docker_v/docker_test/media:/root/media"
restart: always
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: qwerasdf
MYSQL_DATABASE: docker_db
restart: always
volumes:
- "/Users/yetongxue/docker_v/docker_test/db:/var/lib/mysql"
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']我推荐使用utf8mb4,因为它最多可以存储“每个多字节字符4字节”(
https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html
)
发布于 2018-12-05 18:15:56
如果你想用上面的设置创建你自己的docker镜像,而不是在docker-compose中指定它们,你可以这样做:
FROM mysql:5.5.60
RUN ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
VOLUME ["/docker-entrypoint-initdb.d"]
CMD ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_general_ci", "--skip-character-set-client-handshake"]发布于 2017-08-17 15:53:37
compose文件用于运行容器(并且可以构建镜像)。您不能自定义docker-compose文件中的图像。您需要创建一个自定义图像来扩展
mysql
图像。创建Dockerfile:
FROM mysql:5.7
RUN然后构建此镜像:
docker build -t .更新合成文件:
db:
image:https://stackoverflow.com/questions/45729326
复制相似问题