Mysql 如何在一个实例中为数据库的多个字符集配置my.cnf

Mysql 如何在一个实例中为数据库的多个字符集配置my.cnf,mysql,character-encoding,collation,Mysql,Character Encoding,Collation,在一个实例中,我有两个数据库: 第一个数据库->my_db 第二个数据库->样本数据库 mysql> show global variables like 'char%'; +--------------------------+-------------------------------------------+ | Variable_name | Value | +------------

在一个实例中,我有两个数据库: 第一个数据库->my_db 第二个数据库->样本数据库

mysql> show global variables like 'char%';

+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | latin1                                    |
| character_set_connection | latin1                                    |
| character_set_database   | latin1                                    |
| character_set_filesystem | binary                                    |
| character_set_results    | latin1                                    |
| character_set_server     | latin1                                    |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.27.R1/share/charsets/ |
+--------------------------+-------------------------------------------+

mysql> show global variables like 'coll%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

mysql> use my_db;

SHOW CREATE DATABASE my_db ;
+-------------------+-------------------------------------------------------------------------------------------+
| Database          | Create Database                                                                       
+-------------------+-------------------------------------------------------------------------------------------+
| plum_production_1 | CREATE DATABASE `my_db` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */    |
+-------------------+-------------------------------------------------------------------------------------------+
mysql> show variables like '%coll%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | utf8_unicode_ci   |
| collation_server     | utf8_unicode_ci   |
+----------------------+-------------------+

mysql> show variables like '%char%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.27.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
第一数据库my_db

mysql> show global variables like 'char%';

+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | latin1                                    |
| character_set_connection | latin1                                    |
| character_set_database   | latin1                                    |
| character_set_filesystem | binary                                    |
| character_set_results    | latin1                                    |
| character_set_server     | latin1                                    |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.27.R1/share/charsets/ |
+--------------------------+-------------------------------------------+

mysql> show global variables like 'coll%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

mysql> use my_db;

SHOW CREATE DATABASE my_db ;
+-------------------+-------------------------------------------------------------------------------------------+
| Database          | Create Database                                                                       
+-------------------+-------------------------------------------------------------------------------------------+
| plum_production_1 | CREATE DATABASE `my_db` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */    |
+-------------------+-------------------------------------------------------------------------------------------+
mysql> show variables like '%coll%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | utf8_unicode_ci   |
| collation_server     | utf8_unicode_ci   |
+----------------------+-------------------+

mysql> show variables like '%char%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.27.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
第二数据库:

mysql> use sample_db;

mysql> show create database sample_db;
+-----------------+----------------------------------------------------------------------------+
| Database        | Create Database                                                            
|
+-----------------+----------------------------------------------------------------------------+
| plum_production | CREATE DATABASE `plum_production` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+-----------------+----------------------------------------------------------------------------+

mysql> show variables like '%char%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | latin1                                    |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | latin1                                    |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.6.27.R1/share/charsets/ |
+--------------------------+-------------------------------------------+

mysql> show variables like '%coll%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
当我们需要多种数据库排序规则类型时,如何配置my.cnf,即。, 我需要

my\u db-字符集utf8比较utf8\u unicode\u ci

示例\u db-字符集拉丁文对照拉丁文1瑞典文ci

使用上述配置,我面临一些问题,例如在尝试将记录插入多个表(insert语句的第一个表除外)时,表被锁定。其他查询速度太慢。我暂时更改了我的\u db-character \u set拉丁1 collate拉丁1 \u瑞典语\u ci,现在它工作正常。 但我的要求不是这样

对于my_db表和列:字符集-Utf8,排序规则-Utf8\u unicode\u ci-->要完成此操作,我修改了

数据库:-更改数据库my\u db字符集utf8 collate utf8\u unicode\u ci

表格:-对于所有表格-更改表格名称字符集utf8 COLLATE utf8\U unicode\U ci

转换所有列:-更改表格名称转换为字符集utf8 COLLATE utf8\U unicode\U ci; 我的方式对吗?除了我的.cnf还有什么需要改变的吗

示例数据库中:字符集-latin1,排序规则-latin\u swedish\u ci

我们使用的awsrds my.cnf如下所示:-

[mysqld]
character_set_client: utf8
character_set_database: utf8
character_set_results: utf8
character_set_connection: utf8
character_set_server: utf8
collation_connection: utf8_unicode_ci
collation_server: utf8_unicode_ci
以及如何配置本地实例my.cnf(不在aws中)?例如:

[client]
[mysql]
[mysqld]

连接时如何设置名称utf8_mb4?连接到该db时是否需要始终提及?我问了很多问题,因为我对数据丢失感到困惑和害怕。提前谢谢。

my.cnf
大多是可以覆盖的默认值。如果你有混合物,不要担心;关注其他设置

客户端

你有什么客户?(我看到的只是mysql命令行工具。)可能客户端应该始终是utf8mb4(mysql字符集,相当于UTF-8的外部世界)

连接时,使用连接参数建立
字符集utf8mb4
,可能通过执行
设置名称utf8m4

列中的数据

每列可以有一个
字符集
排序规则
。如果未指定,它们将从
创建表中默认设置。如果未指定,则默认为创建数据库。等等

因此,确保每一列都是他们需要的。使用
SHOW CREATE TABLE
进行验证

客户端到/来自列

MySQL在数据在客户端和服务器之间传输时进行代码转换。因此,客户机可以使用
utf8mb4
,但是
插入
/
选择声明为
latin1
的列。(某些组合不起作用。)

推论:如果一个DB是latin1,另一个是utf8,则没有问题

垃圾


请参阅中的“最佳实践”。如果您听到胡言乱语,请查看该链接以获得进一步的调试/治疗。

服务器初始化在
[mysqld]
下。我更喜欢在客户端显式地执行客户端操作(与my.cnf相反,有些客户端不看它)。我的问题没有得到解决@Rick James。我是否也需要更改信息\u架构排序?您不能直接更改
信息\u架构中的任何内容。请为涉及的两个表中的每个表提供
SHOW CREATE TABLE
,以及将数据从一个表复制到另一个表的SQL。并详细说明“未解决”。请检查上述问题。我感到困惑;你要我查什么?