it-swarm-vi.com

Tập tin di chuyển - tạo cập nhật bài viết di chuyển tập lệnh sql

Tôi đang tìm một cách có tổ chức để chạy cập nhật j Joomla cục bộ và sau đó cập nhật hệ thống sản xuất bằng cách triển khai mã + di chuyển db, để tôi không phải cập nhật j Joomla khi sản xuất hoặc vô hiệu hóa trang web trong khi chạy cập nhật. Thành phần cập nhật hiện tại sử dụng một chức năng cụ thể để chạy các bản cập nhật sql

https://github.com/j Joomla/j Joomla-cms/blob/staging/ad Administrator /compents/com_j Joomlaupdate/models/default.php # L515

Trong FinaliseUpgrad, có vẻ như nó đang tìm nạp/phân tích một số truy vấn và áp dụng chúng cho lược đồ. Nếu tôi hiểu điều này một cách chính xác, nó sẽ lặp qua các tập lệnh/chủ sở hữu vị trí trong com_admin/sql/{DBType}/*. Sql phát hiện tất cả các phiên bản mới của tệp sql mà nó phải chạy trên db.

Vấn đề với các tập lệnh này là tôi không thấy làm thế nào tôi có thể sử dụng chúng làm công cụ di chuyển cho cơ sở dữ liệu sản xuất của mình vì chúng có tiền tố bảng và tôi cũng muốn có một tập lệnh di chuyển hợp nhất.

Bạn có thể đề xuất nếu j Joomla thực sự viết những thay đổi mà nó đã thực hiện ở đâu đó trong tệp di chuyển không?

Tệp log/j Joomla_update.php chứa một số dấu vết của các thay đổi nhưng chúng bị cắt ngắn vì rõ ràng nó chỉ ghi lại một vài ký tự

Bất kỳ đề nghị là rất nhiều đánh giá cao.

3
Bizmate

Hai kịch bản:

Phát triển, Dàn dựng-Tác giả, Sản xuất

Sản xuất là chỉ đọc, Giai đoạn là nơi chuẩn bị nội dung và thử nghiệm được thực hiện. Joomla luôn được cập nhật trên Staging, sau đó db được lưu cùng với cam kết và được khôi phục khi sản xuất.

Phát triển, dàn dựng, sản xuất

Nội dung được chỉnh sửa trên Sản xuất. Cập nhật Joomla được thực hiện trên Staging. Khi bạn Đẩy chúng, chỉ cần vào tiện ích mở rộng/cơ sở dữ liệu và nhấn Fix. Hoặc, đối với các máy chủ lớn hơn, hãy tự động hóa nó bằng một plugin hệ thống (viết một plugin nghe một số param trong onAfterRoute, kiểm tra xem đó có phải là một cuộc gọi cục bộ không ($ _SERVER ['REMOTE_ADDR'] = '127.0.0.1' và lên lịch cho một công việc định kỳ gọi nó).

Cập nhật

Để thực hiện cập nhật db sau mỗi lần nâng cấp phiên bản, bạn có hai cách:

Tự động

Chuyển đến quản trị viên - tiện ích mở rộng - trình quản lý tiện ích mở rộng, nhấp vào cơ sở dữ liệu ở bên trái và nhấp vào "Khắc phục" ở trên cùng.

Nếu trang này có lỗi (trường hợp khi nâng cấp từ 2.5 lên 3.3), hãy thử truy cập trực tiếp vào url:

/administrator/index.php?option=com_installer&view=database

Thủ công

Khi điều trên không thành công, (xem thêm bình luận của @ Diego bên dưới):

 find administrator/components/com_admin/sql/updates/mysql/3*.sql | grep mysql > 33.listsql

và điều chỉnh các tệp có liên quan (các phiên bản bị ảnh hưởng có trong tên tệp)

Sau đó, với điều kiện j25 là tiền tố db của bạn

cat 33.listsql | xargs cat > 33.sql
sed -i 's/#_/j25/' 33.sql
mysql -u user --password="somepass" dbname < 33.sql
1
Riccardo Zorn