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 แต่คุณสามารถควบคุมพวกเขาได้

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

โพสต์คำตอบ

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