Tôi đang tạo một máy chủ mới bằng công cụ mysql_install_db. Nó đặt đúng datadir, cổng, mật khẩu, dịch vụ, v.v. Nhưng vấn đề của tôi là bộ ký tự và đối chiếu các bảng cơ sở của tôi bị sai. Chúng cần phải là utf8mb4 và utf8mb4_general_ci.
Tôi không thể tìm cách thay đổi các bảng này khi cài đặt. Khi tôi thay đổi my.cnf/my.ini, nó chỉ thay đổi đối với cơ sở dữ liệu mới được tạo. Nhưng vì mysql_install_db tạo cơ sở dữ liệu hệ thống nên chúng được tạo sai.
Có vẻ như msyql_install_db.exe của tôi không chấp nhận đối số tệp mặc định.
Một cái gì đó khác cũng là lạ. Nếu tôi chạy lệnh để tạo cơ sở dữ liệu mới, nó cũng sẽ sử dụng utf8mb3 trong khi tôi đặt COLLATE rõ ràng thành utf8mb4_unicode_ci.
TẠO CƠ SỞ DỮ LIỆU NẾU KHÔNG TỒN TẠI tt THIẾT LẬP KÝ TỰ MẶC ĐỊNH utf8mb4 COLLATE utf8mb4_unicode_ci
Tôi đang sử dụng mariadb 10.6.4, đây là phiên bản mới nhất.
Bất kỳ ai cũng biết cách thiết lập bộ ký tự và đối chiếu chính xác với cơ sở dữ liệu hệ thống?
Tools\mariadb-winx64\bin\mysql_install_db.exe --datadir="Tools\mariadb-data" --password=PASSWORD --port=8137 --service=MyDB
[Cập nhật]
Tôi đã cố gắng thiết lập my.cnf như sau, nhưng dường như không có tác dụng: https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf
Cũng đã thử sử dụng một cách khác với khởi tạo không an toàn, nhưng cũng có kết quả tương tự. Tôi đã tạo một my.cnf với mã hóa chính xác, nhưng vẫn bị mã hóa bảng sai:
mariadb-winx64\bin\mariadbd.exe --defaults-file=./my.cnf --initialize-insecure --datadir=./Test
Và my.cnf
[khách hàng]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
bỏ qua-cấp-bảng
cổng = 5137
máy chủ đối chiếu = utf8mb4_unicode_ci
init-connect='ĐẶT TÊN utf8mb4'
bộ ký tự-máy chủ = utf8mb4