簡體   English   中英

如何在一個實例中為數據庫的多個CHARACTER SET配置my.cnf

[英]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,collat​​ion-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,collat​​ion-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 SETCOLLATION 如果未指定,則默認為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM