ในช่วงเวลาของการพัฒนาอย่างหนักสกีมาของฐานข้อมูลจะเปลี่ยนแปลงทั้งอย่างรวดเร็วและต่อเนื่องและเมื่อถึงเวลาที่เราจะทำการสร้างรายสัปดาห์ไปที่รุ่นต่อ ๆ มาสคีมาก็เปลี่ยนไปมากจนตัวเลือกที่เหมาะสมเท่านั้นคือ คัดลอกเวอร์ชันใหม่จากฐานข้อมูล dev ของฉัน เห็นได้ชัดว่านี่จะไม่ทำงานเมื่อเราเปิดตัวเนื่องจากข้อมูลการผลิต nuking เป็นสูตรสำหรับภัยพิบัติฉันจึงสงสัยว่ามีกลยุทธ์ใดบ้างในการจัดการ schema ของฐานข้อมูลที่เปลี่ยนแปลงจากรุ่นหนึ่ง / รุ่นอื่น
บางอย่างที่ฉันพบหรือมีประสบการณ์:
- ตรง nuke-and-dump จากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูล (สิ่งที่ฉันทำตอนนี้)
- การดูแลรักษาไฟล์ UPDATE.sql ด้วยคำสั่ง SQL ที่เรียกใช้ผ่านสคริปต์หรือด้วยมือ
- การบำรุงรักษาไฟล์ update.php ด้วยค่า "db-schema-version" ที่สอดคล้องกันในฐานข้อมูลที่ใช้งานอยู่
ตัวเลือกที่สามดูเหมือนจะเหมาะสมที่สุด แต่ก็ยังมีความเป็นไปได้ที่แบบสอบถาม SQL ที่สร้างขึ้นไม่ดีจะล้มเหลวในช่วงกลางสคริปต์ทำให้ฐานข้อมูลอยู่ในสถานะที่มีการอัพเดทเพียงครึ่งเดียว
ดูเหมือนว่าจะไม่มีปัญหา แต่เกิดขึ้นเนื่องจากเราเป็นทีมเราใช้ phpMyAdmin และฉันไม่สามารถพึ่งพาตัวเองได้จำการคัดลอกคำสั่ง SQL ที่เรียกใช้เพื่อวางลงในไฟล์ update.php เมื่อคุณนำทางไปยังหน้าอื่นฉันต้องเขียนคำสั่ง SQL ด้วยมืออีกครั้งหรือย้อนกลับการเปลี่ยนแปลงของฉันและทำมันอีกครั้ง
ฉันเดาว่าสิ่งที่ฉันหวังคือโซลูชันที่ไม่ส่งผลกระทบต่อเวิร์กโฟลว์การพัฒนาของเราหรือไม่
update.php
หรือupdate.sql
ไฟล์ในสภาพแวดล้อมการทดสอบก่อนที่จะนำไปใช้กับฐานข้อมูลที่ใช้งานอยู่ใช่มั้ย? และ PHPMyAdmin ถูกตำหนิสำหรับปัญหาที่อาจเกิดขึ้นเช่นสคริปต์บางทีอาจถึงเวลาที่ต้องมองหาเครื่องมือที่แตกต่าง / ดีกว่า