Score:0

mysql_install_db ชุดอักขระและการเรียงผิด

ธง in

ฉันกำลังสร้างเซิร์ฟเวอร์ใหม่ด้วยเครื่องมือ mysql_install_db มันตั้งค่า datadir, พอร์ต, รหัสผ่าน, บริการ ฯลฯ ที่ถูกต้อง แต่ปัญหาของฉันคือชุดอักขระและการเรียงตารางฐานของฉันผิด ต้องเป็น utf8mb4 และ utf8mb4_general_ci

ฉันไม่พบวิธีเปลี่ยนตารางเหล่านี้ด้วยการติดตั้ง เมื่อฉันเปลี่ยน my.cnf/my.ini จะเปลี่ยนเฉพาะฐานข้อมูลที่สร้างขึ้นใหม่เท่านั้น แต่เนื่องจาก mysql_install_db สร้างฐานข้อมูลระบบ จึงสร้างผิด

ดูเหมือนว่า msyql_install_db.exe ของฉันจะไม่ยอมรับอาร์กิวเมนต์ไฟล์เริ่มต้น

อย่างอื่นก็แปลกเช่นกัน ถ้าฉันเรียกใช้คำสั่งเพื่อสร้างฐานข้อมูลใหม่ ก็จะใช้ utf8mb3 ในขณะที่ฉันตั้งค่า COLLATE เป็น utf8mb4_unicode_ci อย่างชัดเจน

สร้างฐานข้อมูลหากไม่มีอยู่ tt ชุดอักขระเริ่มต้น utf8mb4 รวบรวม utf8mb4_unicode_ci

ฉันใช้ mariadb 10.6.4 ซึ่งเป็นเวอร์ชันล่าสุด

ใครรู้วิธีตั้งค่า charset และ collation ที่ถูกต้องให้กับฐานข้อมูลระบบ?

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

ลองใช้วิธีอื่นด้วย initializing-insecure แต่ก็ได้ผลลัพธ์เหมือนกัน ฉันสร้าง my.cnf ด้วยการเข้ารหัสที่ถูกต้อง แต่ก็ยังได้รับการเข้ารหัสตารางที่ไม่ถูกต้อง:

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

และ my.cnf

[ลูกค้า]
ชุดอักขระเริ่มต้น = utf8mb4


[มายเอสคิวแอล]
ชุดอักขระเริ่มต้น = utf8mb4

[มายเอสคิวลด์]
ข้ามให้สิทธิ์ตาราง
พอร์ต = 5137
เซิร์ฟเวอร์การเรียง = utf8mb4_unicode_ci
init-connect = 'ตั้งค่าชื่อ utf8mb4'
เซิร์ฟเวอร์ชุดอักขระ = utf8mb4
Score:1
ธง ua

ไม่ต้องกังวลเกี่ยวกับตารางที่ระบบสร้างขึ้น (information_schemaฯลฯ). ความพยายามแก้ไขใด ๆ อาจนำไปสู่ปัญหาร้ายแรง

จริงอยู่ มันสมเหตุสมผลแล้วที่พวกเขาจะเป็น utf8mb4 ไม่ใช่ utf8mb3 แต่ปล่อยให้การแปลงนั้นขึ้นอยู่กับผู้พัฒนา MySQL และ MariaDB เพื่อแก้ไข (สักวันหนึ่ง)

มัน เป็น น่าจะดีที่สุดสำหรับ ของคุณ ตารางและการเชื่อมต่อให้เป็น utf8mb4 แต่คุณสามารถควบคุมพวกเขาได้

Niels avatar
in flag
ปัญหาคือ ฉันใช้ตัวเชื่อมต่อ .NET ซึ่งไม่รองรับ UTF8MB3 และฉันต้องการดูว่ามีฐานข้อมูลอยู่หรือไม่ ที่ฉันต้องการตารางระบบ
ua flag
@Niels - `utf8mb3` เป็นคำพ้องความหมายสำหรับ `utf8` พวกเขาควรจะใช้แทนกันได้ คุณ _cannot_ ใช้ `utf8mb4_unicode_ci` กับทั้งสองอย่าง ส่วนแรกของการเรียงต้องตรงกับชุดอักขระ
ua flag
@Niels - และคุณสามารถ `SELECT` ตาราง utf8mb3 แม้ว่า `SET NAMES utf8mb4` จะมีผล บางทีฉันอาจหลงทางว่าปัญหาอยู่ที่ไหน
Niels avatar
in flag
ฉันลบข้อความค้นหา `SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = @name' ออกแล้วทำ 'CREATE DATASE IF NOT EXISTS' ดังนั้นฉันไม่จำเป็นต้องอ่านจากตาราง utf8mb3

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา