นี่ไม่ใช่ข้อผิดพลาด
อย่างน้อยไม่ได้อยู่ในรหัสของคุณ มันเป็นข้อผิดพลาดของคุณในกระบวนการ ผู้จัดการโครงการของคุณควรกังวลเกี่ยวกับกระบวนการของคุณมากกว่ารหัสของคุณ
คุณจัดการกับสิ่งนี้ได้อย่างไร
ค่อนข้างง่ายโดยไม่ปล่อยให้วิศวกรเปลี่ยนการผลิตหรือฐานข้อมูลการพัฒนาร่วมกัน
สมมติว่านี่เป็นฐานข้อมูลการพัฒนาร่วมกัน:
จะเป็นการดีถ้าเป็นไปได้ทั้งหมดหลีกเลี่ยงการมีฐานข้อมูลที่ใช้ร่วมกันในสถานที่แรก ให้ใช้ฐานข้อมูลต่อนักพัฒนาที่มีอายุสั้น สิ่งนี้ควรเป็นแบบอัตโนมัติกับสคริปต์มิฉะนั้นค่าใช้จ่ายในการทดสอบจะมากเกินไปและมีแรงจูงใจที่จะไม่ทดสอบสิ่งต่าง ๆ คุณสามารถมีฐานข้อมูลเหล่านี้ได้ทั้งบนเวิร์กสเตชันของผู้พัฒนาหรือบนเซิร์ฟเวอร์ส่วนกลาง
ถ้าด้วยเหตุผลบางอย่างคุณต้องมีฐานข้อมูลที่ใช้ร่วมกันคุณควรใช้ส่วนควบ - เป็นหลักสิ่งที่กำหนดให้ฐานข้อมูลอยู่ในสถานะที่รู้จักดีทุกครั้งที่คุณต้องการใช้งาน นี่เป็นการหลีกเลี่ยงนักพัฒนาที่ถูกกัดโดยการเปลี่ยนแปลงของคนอื่น
หากคุณจำเป็นต้องใช้การเปลี่ยนแปลงอย่างถาวรไปยังฐานข้อมูลที่คุณควรกระทำพวกเขาที่จะควบคุมแหล่งที่มาของคุณ ตั้งค่าฐานข้อมูลของคุณโดยที่ devs ไม่ได้รับอนุญาตให้เขียนลงไปโดยตรงและมีโปรแกรมที่ดึงการเปลี่ยนแปลงจากแหล่งควบคุมและใช้มัน
สุดท้ายจากคำอธิบายของคุณเกี่ยวกับวิธีการที่คุณแก้จุดบกพร่องสิ่งที่มันเสียงเหมือนคุณไม่ได้ใช้CI ใช้ CI มันค่อนข้างเจ็บปวดในการเซ็ตอัพ แต่มันจะช่วยประหยัดเวลาได้มากในระยะยาวไม่ต้องพูดถึงทำให้คุณไม่ต้องกังวลเกี่ยวกับข้อผิดพลาดของฐานข้อมูลที่ไม่สามารถผลิตได้ คุณจะต้องกังวลกับheisenbugsทันที!
สมมติว่านี่เป็นฐานข้อมูลการผลิต:
หาก devs ของคุณกำลังเปลี่ยนแปลงฐานข้อมูลการผลิตหลายสิ่งผิดพลาดอย่างน่ากลัวแม้ว่าการเปลี่ยนแปลงจะถูกต้องอย่างแน่นอน
นักพัฒนาไม่ควรเข้าถึงฐานข้อมูลการผลิต อย่างมีเหตุผลที่จะและหลายสิ่งหลายอย่างที่สามารถไปมากเป็นมากผิดปกติ
หากคุณต้องการแก้ไขบางสิ่งในฐานข้อมูลการผลิตก่อนอื่นให้คุณสำรองข้อมูลคืนค่าการสำรองข้อมูลนั้นในอินสแตนซ์ (การพัฒนา) ที่แตกต่างกันแล้วเล่นรอบ ๆ ฐานข้อมูลการพัฒนานั้น เมื่อคุณคิดว่าคุณมีการแก้ไขพร้อม (ในการควบคุมแหล่งที่มา!) คุณทำการคืนค่าอีกครั้งใช้การแก้ไขและดูผลลัพธ์ จากนั้นหลังจากสำรองข้อมูลอีกครั้ง (และป้องกันการปรับปรุงที่เกิดขึ้นพร้อมกัน) คุณแก้ไขอินสแตนซ์การผลิตโดยใช้ซอฟต์แวร์แก้ไข
หากคุณต้องการทดสอบบางอย่างในฐานข้อมูลการผลิต ... ไม่คุณไม่ต้องการ การทดสอบใด ๆ ที่คุณต้องทำคุณควรทำในตัวอย่างการพัฒนา หากคุณต้องการข้อมูลเพื่อทำการทดสอบคุณจะได้รับข้อมูลนั้น