mysql 1366 错误解决
问题描述
在配置某个服务时,使用到 mysql docker 服务。启动服务出现错误, 查看日志, 发现操作 mysql 时出现如下错误提示:
Error 1366: Incorrect string value: '\xE8\x8A\x9D\xE9\xBA\xBB...' for column 'Code' at row 1
解决方案
检索后,得知,是 mysql 服务端与客户端 编码不匹配造成的。
客户端使用 utf8mb4
编码。
mysql 启动 docker 时,没指定服务端编码,通过在 mysql 启动命令中增加
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
重启 docker 后,问题解决。
mysql docker-compose.yml
配置 如下:
mysql-server:
image: mysql:5.7
container_name: mysql-server
hostname: mysql-server
volumes:
- db-mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=data123
- MYSQL_DATABASE=data
- MYSQL_USER=data
- MYSQL_PASSWORD=data123
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
networks:
- data-network