thiết lập: nâng cấp lỗi SQL sau khi cập nhật từ 2.2.8 lên 2.3.1


7

Điều gì có thể là lý do cho lỗi này bin/magento setup:upgradesau khi cập nhật từ 2.2.8 đến 2.3.1?

SQLSTATE [42000]: Lỗi cú pháp hoặc vi phạm truy cập: 1061 Tên khóa trùng lặp 'WISHLIST_CUSTOMER_ID', truy vấn là: ALTER TABLE wishlistADD CONSTRAINT WISHLIST_CUSTOMER_IDUNIQUE KEY ( customer_id)

Các db_schema.xmlcủa module danh sách mong ước chứa định nghĩa này:

        <constraint xsi:type="unique" referenceId="WISHLIST_CUSTOMER_ID">
            <column name="customer_id"/>
        </constraint>

Nhưng nó không nên cố gắng tạo ra các ràng buộc nếu nó đã ở đó?

SHOW CREATE TABLE whishlist Cho tôi thấy:

CREATE TABLE `wishlist` (
  `wishlist_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Wishlist ID',
  `customer_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Customer ID',
  `shared` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Sharing flag (0 or 1)',
  `sharing_code` varchar(32) DEFAULT NULL COMMENT 'Sharing encrypted code',
  `updated_at` timestamp NULL DEFAULT NULL COMMENT 'Last updated date',
  `name` varchar(255) DEFAULT NULL COMMENT 'Wish List Name',
  `visibility` smallint(6) DEFAULT '0' COMMENT 'Wish List visibility type',
  PRIMARY KEY (`wishlist_id`),
  KEY `WISHLIST_SHARED` (`shared`),
  KEY `WISHLIST_CUSTOMER_ID` (`customer_id`),
  CONSTRAINT `WISHLIST_CUSTOMER_ID_CUSTOMER_ENTITY_ENTITY_ID` FOREIGN KEY (`customer_id`) REFERENCES `customer_entity` (`entity_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=34412 DEFAULT CHARSET=utf8 COMMENT='Wishlist main Table'

Mục trong setup_modulebảng:

+------------------+----------------+--------------+
| module           | schema_version | data_version |
+------------------+----------------+--------------+
| Magento_Wishlist | 2.0.2          | 2.0.2        |
+------------------+----------------+--------------+

Câu trả lời:


6

Rõ ràng đó là một lỗi Magento. Khi so sánh lược đồ hiện tại với lược đồ khai báo, các ràng buộc và các chỉ mục khác được xử lý riêng, nhưng chỉ mục hiện tại không bị loại bỏ trước khi UNIQUEchỉ mục mới được tạo.

Một cách giải quyết trong trường hợp này là thả hoặcĐổi tên chỉ mục hiện có trong một tập lệnh riêng trước khi thực hiện cập nhật.

alter table wishlist rename index WISHLIST_CUSTOMER_ID to WISHLIST_CUSTOMER_ID_DELETE_ME;

Không hoàn toàn thỏa mãn nhưng thực hiện công việc, miễn là không có giải pháp cho lỗi cốt lõi.

Cập nhật: điều thực sự gây ra lỗi là magento/module-multiple-wishlistmô-đun từ Phiên bản Thương mại / Doanh nghiệp đã bị tắt. Kích hoạt lại nó cũng "giải quyết" vấn đề.

) Không thể bỏ nó mà không xóa khóa ngoại phụ thuộc vào nó


Bạn có thể cho tôi biết làm thế nào tôi có thể kích hoạt mô-đun. Cảm ơn bạn
Robert

Phụ thuộc. Làm thế nào bạn vô hiệu hóa nó?
Fabian Schmengler

không, tôi sử dụng công cụ di chuyển và tôi có cùng một lỗi, tôi cố gắng sử dụng lệnh bảng thay đổi mà bạn đề xuất và cũng không hoạt động.
Robert

vì vậy tôi muốn chuyển từ phiên bản magento 1.9.4.1 sang phiên bản magento 2.3.1, nếu tôi sử dụng lệnh thay đổi mysql, tôi vẫn gặp lỗi tương tự: "SQLSTATE [23000]: Vi phạm ràng buộc toàn vẹn: 1062 Mục nhập trùng lặp '0' f hoặc khóa 'WISHLIST_CUSTOMER_ID_DELETE_ME' ". Bạn có thể cho chúng tôi biết làm thế nào chúng ta có thể loại bỏ khóa ngoại phụ thuộc vào nó, hoặc làm thế nào chúng ta có thể sửa lỗi này? Cảm ơn bạn trước
Robert

Chúng tôi đang nhận được lỗi tương tự, chúng tôi đang sử dụng Nguồn mở, không phải Doanh nghiệp. Bất cứ ai tìm hiểu tại sao điều này đang xảy ra?
Nick Piro

0

Bạn có thể sử dụng MariaDB chứ không phải MySQL?

Gần đây, chúng tôi đã gặp phải một vấn đề ràng buộc kỳ lạ khi cập nhật magento lên 2.3.2 trên máy chủ.

SQLSTATE [42000]: Lỗi cú pháp hoặc vi phạm quyền truy cập: 1091 Không thể DROP FOREIGN KEY SHARED_CATALOG_CREATED_BY_ADMIN_USER_USER_ID; kiểm tra xem nó có tồn tại không, truy vấn là: ALTER TABLE shared_catalogDROP FOREIGN KEY SHARED_CATALOG_CREATED_BY_ADMIN_USER_USER_ID

Tôi không thể tái tạo vấn đề tại địa phương. Đó là, cho đến khi tôi chuyển sang từ mysql 5.7 sang MariaDB 10.2.

Tôi nghi ngờ magento cần thêm / xóa các ràng buộc hai lần trong khi cập nhật nhưng có thể làm điều đó theo thứ tự sai. Có thể bằng cách nào đó liên quan đến thực tế là cả hai mô-đun có chứa một db_schema.xmldb_schema_whitelist.jsontôi không điều tra thêm nữa.

Dù sao, đối với tôi, dường như MySQL không gây ra lỗi trong những trường hợp này và với tôi dường như là sự lựa chọn làm việc tốt hơn cho M2 tại thời điểm này.

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.