สวัสดีครับ
ขออภัยที่ทำให้ติดขัดนะครับ เราได้ตรวจสอบจาก trace และฐานข้อมูลแล้ว พบสาเหตุหลักคือ: ฟังก์ชันสำรองข้อมูล (backup) จะพยายามอ่านตัวแปรสภาพแวดล้อม MYSQL_USERNAME จากบริการ MySQL ของคุณ แต่บริการปัจจุบันของคุณมีเพียง MYSQL_USER (ไม่มี MYSQL_USERNAME) ทำให้โปรแกรมสำรองข้อมูลไม่สามารถดึงชื่อผู้ใช้ได้ จึงเกิดข้อผิดพลาด MISSING_DATABASE_USERNAME ขึ้น
เพื่อเปรียบเทียบ ตัวแปรสภาพแวดล้อมที่เทมเพลต Zeabur MySQL ให้มาโดยค่าเริ่มต้นควรเป็นดังนี้:
MYSQL_USERNAME = root
PASSWORD = <สร้างอัตโนมัติ>
MYSQL_PASSWORD = ${MYSQL_ROOT_PASSWORD}
MYSQL_ROOT_PASSWORD = ${PASSWORD}
MYSQL_DATABASE = zeabur
MYSQL_HOST = ${CONTAINER_HOSTNAME}
MYSQL_PORT = ${DATABASE_PORT}
ในบริการปัจจุบันของคุณ MYSQL_USERNAME หายไปและกลายเป็น MYSQL_USER = mysql ซึ่งดูเหมือนว่ามีการแก้ไขด้วยตนเองก่อนหน้านี้
วิธีแก้ไขที่ง่ายที่สุด: ไปที่หน้า Variables ของบริการ MySQL นั้น แล้ว เพิ่ม ตัวแปรใหม่:
MYSQL_USERNAME = root
(ไม่ต้องลบ MYSQL_USER ที่มีอยู่ หากแอปพลิเคชันของคุณมีการอ้างอิงถึง ก็สามารถเก็บไว้ได้ครับ)
หลังจากเพิ่มแล้ว ให้ลอง "สร้างการสำรองข้อมูล (Create Backup)" อีกครั้งก็จะสำเร็จครับ การสำรองข้อมูลใช้ mysqldump ในฐานะ root ดังนั้นการใส่ root ที่นี่จึงถูกต้องแล้ว หากเปลี่ยนไปใส่ mysql ผู้ใช้นั้นจะมีสิทธิ์เฉพาะฐานข้อมูล zeabur เท่านั้น ซึ่งจะทำให้การสำรองข้อมูลไม่สมบูรณ์ครับ