[英]How to configure my.cnf for multiple CHARACTER SET of database in one instance
在一個實例中,我有兩個數據庫:第一個數據庫-> 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 |
+----------------------+-------------------+
當我們需要數據庫的多種排序類型時,即如何配置my.cnf
my_db-字符集utf8整理utf8_unicode_ci。
Sample_db -character_set latin1整理latin1_swedish_ci 。
通過上述配置現在面臨試圖將記錄插入到多個表,除了插入的第一個表statement.And其他查詢太slow.Temporarily我改變MY_DB時像桌子的一些問題被鎖定- CHARACTER_SET LATIN1整理latin1_swedish_ci,現在它工作正常。 但是我的要求不是這個。
對於my_db表和列:字符集-Utf8,collation-utf8_unicode_ci->為此,我進行了更改
數據庫:-更改數據庫my_db字符集utf8整理utf8_unicode_ci,
表:-對於所有表-ALTER TABLE table_names字符集utf8 COLLATE utf8_unicode_ci;
要轉換所有列:-ALTER TABLE table_names轉換為字符集utf8 COLLUT utf8_unicode_ci; 我的方法正確嗎?除了my.cnf之外,還有什么要更改的嗎?
並在sample_db中 :Chartter 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?連接該數據庫時是否需要始終提及? 我問許多問題,因為感到困惑和害怕數據丟失..謝謝。
my.cnf
通常是可以被覆蓋的默認值。 如果您有混合物,請不要擔心。 專注於其他設置。
客戶
你有什么客戶? (我所看到的只是mysql命令行工具。)可能客戶端應始終為utf8mb4(mysql字符集,等效於UTF-8的外部世界)。
連接時,可以使用連接參數來建立CHARACTER SET utf8mb4
,這可能是通過SET NAMES utf8m4;
列中的數據
每列都可以具有CHARACTER SET
和COLLATION
。 如果未指定,則默認為CREATE TABLE
。 如果未指定,則默認為CREATE DATABASE
。 等等。
因此,請確保每一列都是他們需要的方式。 使用SHOW CREATE TABLE
進行驗證。
客戶往返專欄
MySQL在客戶端和服務器之間傳遞數據時會對其進行代碼轉換。 因此,可以讓客戶端使用utf8mb4
,但可以INSERTing
/ SELECTing
聲明為latin1
的列。 (某些組合不起作用。)
結論:如果一個數據庫是latin1,而另一個數據庫是utf8,則沒有問題。
垃圾
請參閱http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored中的 “最佳做法”。 如果發現亂碼,請參閱該鏈接以獲取進一步的調試/治愈方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.