【发布时间】:2017-12-23 16:22:42
【问题描述】:
在一个实例中,我有两个数据库: 第一个数据库 -> my_db 第二个数据库 -> sample_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 */ |
+-------------------+-------------------------------------------------------------------------------------------+
第一个数据库; my_db
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 |
+----------------------+-------------------+
当我们需要多种排序类型的 db 时如何配置 my.cnf,即 我需要
my_db - character_set utf8 collate utf8_unicode_ci.
Sample_db - character_set latin1 collate latin1_swedish_ci.
使用上述配置,我面临一些问题,例如在尝试将记录插入到除插入语句的第一个表之外的多个表中时表被锁定。其他查询太慢。我暂时更改了 my_db -character_set latin1 collate latin1_swedish_ci,现在它工作正常。 但我的要求不是这个。
对于 my_db 表和列:字符集-Utf8,collation-utf8_unicode_ci --> 为了完成这项工作,我进行了更改
数据库:- 更改数据库 my_db 字符集 utf8 整理 utf8_unicode_ci,
表格:- 对于所有表格 - ALTER TABLE table_names CHARACTER SET utf8 COLLATE utf8_unicode_ci;
转换所有列:- ALTER TABLE table_names CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; 我的方法是否正确?。除了 my.cnf 之外,还有什么要改变的吗?
在sample_db中:Charcter set-latin1,collation-latin_swedish_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?连接到该数据库时是否需要始终提及?我问了很多问题,因为我很困惑,害怕数据丢失..提前谢谢。
【问题讨论】:
标签: mysql character-encoding collation