mysql_install_db 錯誤的字元集和排序規則

mysql_install_db 錯誤的字元集和排序規則

我正在使用 mysql_install_db 工具建立一個新伺服器。它設定了正確的資料目錄、連接埠、密碼、服務等。它們需要是 utf8mb4 和 utf8mb4_general_ci。

我找不到在安裝過程中更改這些表的方法。當我更改 my.cnf/my.ini 時,它只會更改新建立的資料庫。但是由於 mysql_install_db 建立了系統資料庫,因此它們會建立錯誤。

它看起來也像我的 msyql_install_db.exe 不接受預設檔參數。

還有一些事情也很奇怪。如果我執行指令來建立一個新資料庫,它也會使用 utf8mb3,同時我將 COLLATE 明確設定為 utf8mb4_unicode_ci。

CREATE DATABASE IF NOT EXISTS tt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

我正在使用 mariadb 10.6.4 這是最新版本。

有人知道如何為系統資料庫設定正確的字元集和排序規則嗎?

Tools\mariadb-winx64\bin\mysql_install_db.exe --datadir="Tools\mariadb-data" --password=PASSWORD --port=8137 --service=MyDB

在此輸入影像描述

[更新]

我嘗試使用以下內容設定 my.cnf,但似乎沒有效果:https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf

也嘗試使用不同的方式進行初始化不安全,但也得到相同的結果。我使用正確的編碼建立了 my.cnf,但仍然得到了錯誤的表編碼:

mariadb-winx64\bin\mariadbd.exe --defaults-file=./my.cnf --initialize-insecure --datadir=./Test

還有我的.cnf

[client]
default-character-set=utf8mb4


[mysql]
default-character-set=utf8mb4

[mysqld]
skip-grant-tables
port = 5137
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

答案1

不用擔心系統產生的表(information_schema等)。任何修改它們的嘗試都可能導致嚴重的問題。

確實,它們是 utf8mb4,而不是 utf8mb3。但將這種轉換留給 MySQL 和 MariaDB 的開發人員來修復(有一天)。

可能最適合你的表和連接為 utf8mb4。但你確實可以控制它們。

相關內容