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;
网友评论