我正在尝试建立与docker-mysql的汇合点。我已经遵循了我能在网上找到的所有指令,汇合部仍在给我Your database must be configured to either use utf8 or utf8mb4 as the default character set.
这是我的船坞-写作:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- ./mycustom.cnf:/etc/mysql/conf.d/my.cnf
restart: always
command: --sql_mode=""
environment:
MYSQL_DATABASE: bachelorarbeit_database
# So you don't have to use root, but you can if you like
MYSQL_USER: horizon
# You can use whatever password you like
MYSQL_PASSWORD: 1P@ssw0rt123
# Password for root access
MYSQL_ROOT_PASSWORD: P@ssw0rt
MYSQL_ROOT_USER: root
ports:
# <Port exposed> : < MySQL Port running inside container>
- '3310:3306'下面是与docker- mycustom.cnf位于同一个目录中的
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
default-storage-engine=INNODB
max_allowed_packet=256M
innodb_log_file_size=2GB
transaction-isolation=READ-COMMITTED
binlog_format=row这是my.cnf文件
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
default-storage-engine=INNODB
max_allowed_packet=256M
innodb_log_file_size=2GB
transaction-isolation=READ-COMMITTED
binlog_format=row发布于 2020-06-06 04:24:37
默认情况下,在创建带有的MySQL数据库时,它默认为latin1。
您可以通过在db服务中传递以下命令来覆盖该命令:
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci --init-connect='SET NAMES UTF8;' --innodb-flush-log-at-trx-commit=0我不知道--sql_mode=""在做什么--只是将一个参数传递给默认命令?如果是这样的话,您可能会将其添加到参数列表中。
一旦重新启动容器,就可以登录mysql one并运行以下SQL来确认它现在是UTF-8:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_unicode_ci |
+--------------------------+----------------------+
1 row in set (0.00 sec)https://stackoverflow.com/questions/62019044
复制相似问题