Mysql 如何更改default collation_connection setting
客戶端連線到伺服器時,如何更改預設的“ collation_connection”設定,這會影響文字和函式。
按照設計,collation_connection設定為每個客戶端指定的字符集的預設排序規則。例如,如果伺服器版本為8.0,並且客戶端指定了utf8mb4,則在建立連線後,collation_connection將為utf8mb4_0900_ai_ci。客戶端只能指定字符集,不能在連線時指定排序規則。如果您想更改預設的collation_connection,您需要發出SET NAMES命令,如下所示
mysql> SET NAMES utf8mb4 COLLATE utf8mb4_ja_0900_as_cs_ks;
通常,應用程式 只需要使用一種歸類。如果應用程式需要一個collation_connection,如utf8mb4_ja_0900_as_cs_ks,但當前的collation_connection設定為utf8mb4_0900_ai_ci,則 可能會得到錯誤的結果。這是一個非常糟糕的情況。因此,您可能希望讓伺服器為每個連線設定所需的排序規則。
為此,有以下方法:
1.在每次連線時發出 SET NAMES
如上所述,可以使用SET NAMES命令更改collation_connection。您可以在每次連線時使用 初始化連線選項。雖然init_connect選項 不影響擁有SUPER或CONNECTION_ADMIN許可權的使用者,但是該選項對於應用程式使用者來說已經足夠了。在這種情況下,您可以在my.cnf中設定選項,如下所示:
[mysqld] init_connect=SET NAMES utf8mb4 COLLATE utf8mb4_ja_0900_as_cs_ks
您需要重新啟動MySQL伺服器來應用my.cnf中的配置更改 設定全域性 命令:
mysql> SET GLOBAL init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_ja_0900_as_cs_ks';
您還可以在MySQL 8.0上使用SET PERSIST命令來使配置更改持久化。
有關init_connect選項的更多資訊,請參見以下手冊: https://dev.mysql.com/doc/refman/en/server-system-variables.html#sysvar_init_connect
2.使用 using skip_character_set_client_handshake 選項應用全域性設定
當未指定skip _ character _ set _ client _ handshake選項時,歸類設定為每個客戶端指定的字符集的預設歸類。當指定skip _ character _ set _ client _ handshake選項時,將 忽略客戶端字符集,並在連線時應用伺服器設定。由於skip _ character _ set _ client _ handshake選項是隻讀選項,您需要將它新增到my.cnf中,並重新啟動伺服器以啟用該選項,如下所示:
[mysqld] skip_character_set_client_handshake
當 skip_character_set_client_handshake 生效時,從全域性系統變數中複製 character_set_client, character_set_results, and collation_connection 。有關 skip_character_set_client_handshake選項的更多詳細資訊,請參見參考手冊: https://dev.mysql.com/doc/refman/en/server-options.html#option_mysqld_character-set-client-handshake
您可以設定全域性級別的collation_connection系統變數,如下所示;請注意,您必須首先更改字符集:
mysql> SET GLOBAL character_set_connection=utf8mb4; mysql> SET GLOBAL collation_connection=utf8mb4_ja_0900_as_cs_ks;
但是,不能在my.cnf中設定collation_connection,因為它不是啟動選項。所以,你需要在伺服器以某種方式重啟時設定它。
在MySQL 8.0系列上,可以使用 設定持續命令如下:
mysql> SET PERSIST character_set_connection=utf8mb4; mysql> SET PERSIST collation_connection=utf8mb4_ja_0900_as_cs_ks;
SET PERSIST使全域性系統變數持久化,而不是用於啟動選項。雖然collation_connection不是啟動選項,而是具有全域性級別範圍的系統變數,但是可以使用SET PERSIST。
如果您使用的是 MySQL 5.7或更早版本,init_file選項是一個不錯的選擇。它指定了一個包含伺服器啟動時執行的命令的檔案。您可以指定 初始化檔案my.cnf中的選項如下:
[mysqld] init_file=/path/to/init_file.sql
檔案的內容可以像下面這樣:
SET GLOBAL character_set_connection=utf8mb4; SET GLOBAL collation_connection=utf8mb4_ja_0900_as_cs_ks;
總結: 保證服務端與客戶端使用統一的資料庫字符集與編碼,可以在 my.cnf / mysql 8 SET PERSIST / init_file 新增如下配置。
#my.cnf引數配置 character_set_server = utf8mb4 collation-server = utf8mb4_general_ci init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_general_ci' skip-character-set-client-handshake
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2983558/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- setting.xmlXML
- 阿里雲setting阿里
- Maven setting.xmlMavenXML
- mongodb如何更改埠號MongoDB
- mysql-timestamp 0000-00-00 00:00:00 Invalid default valueMySql
- vue2 setting配置Vue
- Requested setting INSTALLED_APPSAPP
- Oracle default usersOracle
- win10 如何更改輸入法 win10 如何更改輸入法Win10
- 公司網站如何更改內容公司網站如何更改內容資訊網站
- Linux中如何更改MAC地址LinuxMac
- 【Basis】HANA Database SR Basis SettingDatabase
- “setting.xml” has syntax errorsXMLError
- PostgreSQL DBA(156) - pgAdmin(Rollback setting)SQL
- django setting 配置資料庫Django資料庫
- raspberry pi bookworm setting static ipWorm
- Django中更改預設資料庫為mysqlDjango資料庫MySql
- Linux CentOS更改MySQL資料庫目錄位置LinuxCentOSMySql資料庫
- 2.4.1.1 Default Services in a CDB
- 如何在 Linux 中更改 MAC 地址LinuxMac
- git (v2.18.0) error setting certificateGitError
- maven setting.xml中出現{DESede}MavenXML
- groovy-gradle-setting.gradle和sourceGradle
- MySQL 5.7 datetime和timestamp欄位設定default 0 插入資料包錯MySql
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- Unable to locate factory with name [default]
- @Builder.Default 及@BuilderUI
- 如何更改Apple Watch上的錶盤APP
- win10如何更改桌面位置_win10怎麼更改桌面路徑Win10
- win10怎麼更改賬戶 win10如何更改本地賬戶Win10
- 應用設定Setting的實現
- win10全域性字型怎麼更改_win10如何更改全域性字型Win10
- SCSS !default預設變數CSS變數
- Apache2 Ubuntu Default PageApacheUbuntu
- oracle: default role 詳解(轉)Oracle
- export 和 export default 區別Export
- CSS :default與:checked 區別CSS
- bug solved | export 'default' was not found in 'xxx'Export