mysql插入不了中文,中文乱码的解决方法

使用docker部署MySQL5.6 /8.0都出现了该问题。

一开始以为是数据的字符集问题,查看了很多文章,都是调整数据库的字符集。但是再怎么调整都不行,就开始怀疑是本地的字符集,一查看果然是的,正确设置地址字符集后就解决了。

1.

进入mysql容器内,查看本地字符集,发现不是UTF-8

# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

2.生成容器时,同时指定容器的字符集 LANG: en_US.UTF-8。

一开始使用SQL_CHARSET: utf8mb4  MYSQL_COLLATION: utf8mb4_unicode_ci 设置本地字符集但是还是解决不了问题,后面使用了 LANG: en_US.UTF-8  得以解决。

version: '3.3'  
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    environment:
      LANG: en_US.UTF-8   ##指定运行时字符集
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: test 
      MYSQL_USER: user
      MYSQL_PASSWORD: 123123
    volumes:  
      - /root/mysql/data:/var/lib/mysql

    ports:  
      - "3306:3306"
    restart: always

同时在 my.cnf中指定数据库的字符集。在 [mysqld] 下加上以下内容。

[mysqld]
character-set-server=utf8   ##添加
collation-server=utf8_general_ci  ##添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值