Thực tế là những gì chúng ta muốn là đây: http://www.liquibase.org/
Liquibase là một thư viện mã nguồn mở (Apache 2.0 được cấp phép), thư viện độc lập với cơ sở dữ liệu để theo dõi, quản lý và áp dụng các thay đổi cơ sở dữ liệu. Nó được xây dựng trên một tiền đề đơn giản: Tất cả các thay đổi cơ sở dữ liệu được lưu trữ ở dạng có thể đọc được của con người và được kiểm tra trong kiểm soát nguồn.
Tuy nhiên, quá trình phát triển của chúng tôi không hỗ trợ nó. Chúng tôi thường không sửa đổi cơ sở dữ liệu thông qua các tập lệnh rời rạc do chúng tôi tự viết, chúng tôi sử dụng các plugin mà chúng tôi kích hoạt. Chúng tôi không viết các tập lệnh DML để sửa đổi dữ liệu tra cứu mà sau đó chúng tôi kiểm tra kiểm soát mã nguồn, chúng tôi sử dụng giao diện người dùng trên trang quản trị và do đó không có mã nguồn để sử dụng sau này để sao chép thay đổi đó trong quá trình di chuyển.
Tuy nhiên, chúng tôi có thể mô phỏng một số phần mềm - sử dụng một số công cụ được liệt kê trên trang này:
/programming//q/225772/149060
Chẳng hạn, liquidbase có một tính năng khác biệt, tùy chọn bao gồm các thay đổi đối với dữ liệu. Chúng tôi có thể, có khả năng, đưa ra lược đồ và dữ liệu khác với tập lệnh, ngoại trừ (có thể) các bảng nhất định có khả năng bao gồm dữ liệu thử nghiệm (ví dụ: bài đăng, v.v.) và sau đó áp dụng tập lệnh vào cơ sở dữ liệu sản xuất.
MySQLDiff (đã thảo luận về câu hỏi StackOverflow) có lược đồ khác nhau và tác giả của nó khuyến nghị mysql_coldiff cho các khác biệt dữ liệu theo bảng - cả hai đều được triển khai trong perl, nếu các công cụ java (liquidbase) quá nặng tài nguyên cho máy chủ của bạn - mặc dù mang cả cơ sở dữ liệu cục bộ và chạy công cụ trên PC của bạn giải quyết vấn đề đó ...
Nếu chúng tôi thực sự muốn làm đúng, chúng tôi nên đăng nhập bất kỳ sql nào liên quan đến cài đặt, tùy chọn hoặc thay đổi cấu hình khác và bất kỳ thay đổi lược đồ nào - và chuyển đổi mã đã ghi thành tập lệnh di chuyển để chơi với máy chủ sản xuất của chúng tôi. Phát tập lệnh di chuyển đối với máy chủ, sao chép tệp trang web wordpress (không bao gồm tải lên, nếu có) và chúng tôi là vàng.
Vì vậy, theo tôi, cách tốt nhất là một plugin-builder-builder của nhà phát triển bẫy bẫy sql chúng ta cần, lưu trữ nó và sau đó tạo một tập lệnh di chuyển từ mã đã đăng nhập, thay vì xây dựng một cách để hợp nhất cơ sở dữ liệu giữa dàn dựng và sản xuất. Có vẻ là một vấn đề đơn giản hơn để giải quyết quá.
Nếu chúng tôi xem mã của móc nối nhạc cụ của @bueltge để lấy cảm hứng: https://gist.github.com/1000143 (cảm ơn Ron Rennick qua G + vì đã chỉ cho tôi theo hướng SAVEQUERIES và móc tắt máy, đó là dẫn tôi đi tìm nó)
- thay đổi nó để có được đầu ra SAVEQUERIES thay thế
- chỉ chạy trong khi quản trị viên
- lọc ra tất cả các lựa chọn
- lưu kết quả ra bảng trong móc tắt máy
- chúng tôi có thể chọn lọc chuyển đổi bẫy đầu ra dựa trên những gì chúng tôi đang làm vào lúc này.
Ví dụ:
Tên chụp: Kích hoạt & Cấu hình Plugin XYZ
Chụp chuyển đổi trạng thái - bật
... cài đặt và cấu hình plugin XYZ
Chụp chuyển đổi trạng thái - tắt
Xuất tập lệnh di chuyển cho: Kích hoạt & Cấu hình Plugin XYZ
Nhấn nút Xuất - để tạo trường văn bản bật lên với SQL bị bẫy đã lọc - lý tưởng được định dạng trước dưới dạng tập lệnh shell với lệnh gọi dòng lệnh tới mysql. Sao chép và dán nó vào thư mục mã di chuyển của bạn và thêm vào kho lưu trữ mã nguồn của bạn.
Chú ý cẩn thận để bật và tắt chức năng chụp khi bạn đang làm việc và bạn sẽ có thể tạo tập lệnh di chuyển hoàn hảo để đưa cơ sở dữ liệu sản xuất của bạn đến một cấu hình tương đương với cơ sở dữ liệu dàn của bạn.
Những gì tốt hơn, bạn sẽ có một kịch bản (hoặc loạt giống nhau) mà bạn có thể KIỂM TRA. Hình ảnh có các kịch bản di chuyển có thể nhân rộng, có thể kiểm tra, di chuyển !!
Tôi đã yêu rồi.
Ai khác?