เราใช้สิ่งที่คล้ายกับ bcwoord เพื่อให้ schemata ฐานข้อมูลของเราซิงโครไนซ์กับการติดตั้งที่แตกต่างกัน 5 แบบ (การผลิตการจัดเตรียมและการติดตั้งเพื่อการพัฒนาบางส่วน) และสำรองข้อมูลในการควบคุมเวอร์ชันและทำงานได้ค่อนข้างดี ฉันจะอธิบายรายละเอียดเล็กน้อย:
ในการซิงโครไนซ์โครงสร้างฐานข้อมูลเรามีสคริปต์เดียว update.php และไฟล์จำนวนหนึ่งที่มีหมายเลข 1.sql, 2.sql, 3.sql เป็นต้นสคริปต์ใช้ตารางพิเศษหนึ่งตารางเพื่อจัดเก็บหมายเลขเวอร์ชันปัจจุบันของ ฐานข้อมูล. ไฟล์ N.sql สร้างขึ้นด้วยมือเพื่อเปลี่ยนจากเวอร์ชัน (N-1) เป็นเวอร์ชัน N ของฐานข้อมูล
สามารถใช้เพื่อเพิ่มตารางเพิ่มคอลัมน์ย้ายข้อมูลจากรูปแบบคอลัมน์เก่าไปเป็นรูปแบบคอลัมน์ใหม่จากนั้นวางคอลัมน์แทรกแถวข้อมูล "หลัก" เช่นประเภทผู้ใช้เป็นต้นโดยทั่วไปสามารถทำอะไรก็ได้และด้วยข้อมูลที่เหมาะสม สคริปต์การย้ายข้อมูลคุณจะไม่สูญเสียข้อมูล
สคริปต์การอัปเดตทำงานดังนี้:
- เชื่อมต่อกับฐานข้อมูล
- ทำการสำรองฐานข้อมูลปัจจุบัน (เนื่องจากข้อมูลจะผิดพลาด) [mysqldump]
- สร้างตารางการทำบัญชี (เรียกว่า _meta) หากไม่มีอยู่
- อ่าน VERSION ปัจจุบันจากตาราง _meta สมมติว่า 0 หากไม่พบ
- สำหรับไฟล์. sql ทั้งหมดที่มีหมายเลขสูงกว่า VERSION ให้ดำเนินการตามลำดับ
- หากไฟล์ใดไฟล์หนึ่งเกิดข้อผิดพลาด: ย้อนกลับไปที่ข้อมูลสำรอง
- มิฉะนั้นให้อัปเดตเวอร์ชันในตารางการทำบัญชีเป็นไฟล์. sql สูงสุดที่ดำเนินการ
ทุกอย่างเข้าสู่การควบคุมแหล่งที่มาและทุกการติดตั้งจะมีสคริปต์สำหรับอัปเดตเป็นเวอร์ชันล่าสุดด้วยการเรียกใช้สคริปต์เดียว (เรียก update.php ด้วยรหัสผ่านฐานข้อมูลที่เหมาะสมเป็นต้น) SVN อัปเดตสภาพแวดล้อมการจัดเตรียมและการใช้งานจริงผ่านสคริปต์ที่เรียกสคริปต์อัพเดตฐานข้อมูลโดยอัตโนมัติดังนั้นการอัปเดตโค้ดจึงมาพร้อมกับการอัปเดตฐานข้อมูลที่จำเป็น
นอกจากนี้เรายังสามารถใช้สคริปต์เดียวกันเพื่อสร้างฐานข้อมูลใหม่ทั้งหมดตั้งแต่เริ่มต้น เราเพียงแค่วางและสร้างฐานข้อมูลใหม่จากนั้นเรียกใช้สคริปต์ซึ่งจะเติมฐานข้อมูลใหม่ทั้งหมด เรายังสามารถใช้สคริปต์เพื่อเติมฐานข้อมูลว่างสำหรับการทดสอบอัตโนมัติ
ใช้เวลาเพียงไม่กี่ชั่วโมงในการตั้งค่าระบบนี้เป็นแนวคิดที่เรียบง่ายและทุกคนจะได้รับรูปแบบการกำหนดหมายเลขเวอร์ชันและเป็นสิ่งล้ำค่าที่มีความสามารถในการก้าวไปข้างหน้าและพัฒนาการออกแบบฐานข้อมูลโดยไม่ต้องสื่อสารหรือดำเนินการแก้ไขด้วยตนเอง บนฐานข้อมูลทั้งหมด
ระวังเมื่อวางแบบสอบถามจาก phpMyAdmin! คำค้นหาที่สร้างขึ้นเหล่านี้มักจะมีชื่อฐานข้อมูลซึ่งคุณไม่ต้องการอย่างแน่นอนเพราะมันจะทำลายสคริปต์ของคุณ! mydb
สิ่งที่ต้องการสร้างตาราง newtable
(... ) จะล้มเหลวหากฐานข้อมูลในระบบไม่เรียกว่า mydb เราได้สร้างเบ็ด SVN ล่วงหน้าที่จะไม่อนุญาตไฟล์. sql ที่มีmydb
สตริงซึ่งเป็นสัญญาณว่ามีคนคัดลอก / วางจาก phpMyAdmin โดยไม่มีการตรวจสอบที่เหมาะสม