Khi lược đồ & phiên bản dữ liệu sẽ khác nhau?


8

Ví dụ: tôi không có tập lệnh thiết lập trong mô-đun của tôi, tôi có thể bỏ qua setup_versionthẻ trong module.xmltệp không.

Trong m1 mô-đun tự động được cài đặt, bây giờ đầu tiên là lỗi (nếu chúng tôi không chạy lệnh nâng cấp thiết lập). Tại sao tôi cần phải tự chạy nâng cấp thiết lập?

Kịch bản là gì schema_versiondata_versionsẽ khác nhau? Tôi đã quan sát hầu hết các bản ghi trong bảng setup_module chứa cùng các giá trị.


1
nâng cấp tự động đã được gỡ bỏ để ủng hộ hiệu suất và sự ổn định. Kiểm tra và so sánh tất cả các phiên bản mô-đun trên mỗi và mọi yêu cầu là vô ích trong sản xuất. Nâng cấp cơ sở dữ liệu là loại hành động cần được toàn quyền kiểm soát của nhà phát triển, nhưng không phải là ứng dụng.
V Korotun

Trong M2, có hai loại sửa đổi cơ sở dữ liệu mà bạn có thể có, bằng cách triển khai hai giao diện tương ứng: "\ Magento \ Framework \ Setup \ Nâng cấpDataInterface" và "\ Magento \ Framework \ Setup \ Nâng cấpSchemaInterface". Vì vậy, bạn có thể thực hiện nâng cấp dữ liệu cơ sở dữ liệu mà không thay đổi lược đồ cơ sở dữ liệu. Đó là lý do tại sao các phiên bản của những người sống cuộc sống của họ.
V Korotun

Câu trả lời:


12

data_version là phiên bản của dữ liệu được thêm vào thông qua các tập lệnh dữ liệu.

Các tập lệnh này được phát triển trong thư mục mô-đun dưới Setup/InstallData.phpSetup/UpgradeData.php.

schema_version là phiên bản của lược đồ cơ sở dữ liệu được thêm vào thông qua các tập lệnh thiết lập.

Các tập lệnh này được phát triển trong thư mục mô-đun bên dưới Setup/InstallSchema.phpSetup/UpgradeSchema.php

Vì vậy, kịch bản khi data_versionschema_versionkhác nhau là như sau:

  • Bạn có một mô-đun có cả tập lệnh thiết lập và tập lệnh dữ liệu
  • Thông thường bạn nên chạy php bin/magento setup:upgradeđể cả lược đồ và tập lệnh dữ liệu sẽ chạy
  • Thay vì làm điều này trước tiên bạn chạy php bin/magento setup:db-schema:upgrade. Tại thời điểm này schema_versionsẽ khác vớidata_version
  • Chạy php bin/magento setup:db-data:upgradesẽ nâng cấp dữ liệu và làm cho cả hai phiên bản giống nhau

1
Nhưng tại sao mọi người sẽ chạy các lệnh đó một cách riêng lẻ thay vìsetup:upgrade
MagePologistso

1
@MagePologistso yeah, đó không phải là một hành vi bình thường. Nhưng vì cả hai lệnh đều có sẵn nên nó có thể xảy ra.
Raphael tại Nghệ thuật piano kỹ thuật số

@MagePologistso Không có lý do, tôi nghĩ nó hoàn toàn dư thừa.
Bunyamin Inan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.