Docker Hub MySQL中给了一个例子,说是可以在启动容器的时候指定字符集:
$ docker run \
--name some-mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d mysql:tag \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
复制这个命令实际启动了一个容器,进去后看了下字符集好像没有变化:
$ show variables like '%char%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)
有大佬知道这是为什么吗?
自定义配置文件可以实现。
在宿主机新建一个配置文件,文件名随意,后缀须为.cnf
:
$ vim character_set.cnf
拷贝以下内容粘贴至文件:
[mysqld]
character-set-server = utf8mb4
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
保存并退出。
然后启动时将容器的/etc/mysql/conf.d
挂载到该文件所在目录:
$ docker run \
--name mysql \
-v /path/to/cusotm:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d mysql:tag
启动后进入容器登录MySQL
:
$ show variables like '%char%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.01 sec)
可以看到字符集已正确设置。
MySQL - 设置字符集
问题内容: Cookie是使用big5集编码的,因此无法插入MySQL。您能帮我解决这个问题吗? 字段:是eng,是日期,是汉字。 问题答案: 创建表时使用 UTF-8 。 插入表格时使用 UTF-8 阅读更多 和更多 详细代码 下面的代码是经过测试的代码,请执行以下工作。 如果您已经创建了数据库,请按以下代码更改它。如果没有创建数据库,则创建数据库并将Collation设置为utf8_uni
问题内容: 在两台计算机的HTML文件中显示数据库的结果时出现问题。 因此,在一台计算机上它显示的名称是这样的: 数据库的排序规则为,表的排序规则为。 在另一台计算机上,它显示如下(我希望这样): 名称在标签中列出。两种浏览器的语言是英语,并且Html文件在两种环境下都相同,所以我认为这与php.ini文件的字符集或编码有关 我曾尝试更改中的值,但没有任何变化,我在任何地方都找不到答案。 唯一的区
问题内容: 我正在使用 mysql dbms存储来自Wikipedia的页面。我已使用指令在my.cnf文件中将字符集编码设置为(维基百科编码): 并使用属性定义创建了我的数据库。 我还通过以下方式更改了mysqld客户端的字符集编码: 在初始化我的jdbc驱动程序时插入属性。 进行查询 但是我注意到mysql服务器用其他字符替换了一些字符。 例如,它替换为。 更新 我已经运行的命令确保这两个和的
我无法使用MySQL和phpMyAdmin进行基本的编码工作。我想在我的数据中使用简单的法语字符(如é和è)。如果运行UPDATE,则字符插入正确。但不是在我导入剧本的时候... 下面是我在phpMyAdmin上导入的脚本: 导入时出现的两个错误: 在phpMyAdmin上导入脚本时,唯一接近utf8mb4的选项是utf8 表和数据库也采用类似的编码 但是数据被剥离了... 我想做什么 将COLL
我有一个名为的表,它只有一列。 的输出是: 当我运行此查询:时,将插入这些值。 但是,当我尝试执行此查询:时,结果是: 的结果为: 我哪里犯错了?
我开始使用函数,而不是PHP中的旧函数,我对这段代码有一点问题: 该代码返回以下两个错误: 警告:mysqli::准备():无法在第136行的C:\用户\Grega\Server\Application\inc\class\APIConnect.php中获取MySQL 致命错误:调用成员函数在第137行的C:\用户\Grega\服务器\应用程序\inc\类\APIConnect.php中的非对象上