Docker compose 配置 mysql emoji 支持

Docker-compose.yml 文中配置如下

# mysql-db:
mysql_db:
  image: mysql:5.7
  volumes:
    - /_share/master_db:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=password
    - MYSQL_DATABASE=dbname
  ports:
    - "3399:3306"
  command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --init-connect='SET NAMES UTF8MB4;' --sql-mode="NO_ENGINE_SUBSTITUTION" --innodb-flush-log-at-trx-commit=0
  expose:
    - "3306"
    - "3399"

需要注意的是表也需支持 utf8mb4 集
用以下命令查询数据库支持的字符集

 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

查询表的 sql 模式,如果在严格模式下,表未设置成 utf8mb4 也是不支持 emoji 字符 的

show variables like 'sql_mode';

修改表的字符集

 alter table `table_name` convert to character set  utf8mb4;

你可能感兴趣的:(Docker compose 配置 mysql emoji 支持)