Was könnte der Grund für diesen Fehler bin/magento setup:upgrade
nach dem Update von 2.2.8 auf 2.3.1 sein?
SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1061 Doppelter Schlüsselname 'WISHLIST_CUSTOMER_ID', Abfrage war: ALTER TABLE
wishlist
ADD CONSTRAINTWISHLIST_CUSTOMER_ID
UNIQUE KEY (customer_id
)
Das db_schema.xml
Modul der Wunschliste enthält diese Definition:
<constraint xsi:type="unique" referenceId="WISHLIST_CUSTOMER_ID">
<column name="customer_id"/>
</constraint>
Aber es sollte nicht versuchen, die Einschränkung zu erstellen, wenn sie bereits vorhanden ist?
SHOW CREATE TABLE whishlist
zeigt mir:
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'
Der Eintrag in der setup_module
Tabelle:
+------------------+----------------+--------------+
| module | schema_version | data_version |
+------------------+----------------+--------------+
| Magento_Wishlist | 2.0.2 | 2.0.2 |
+------------------+----------------+--------------+
quelle
Verwenden Sie möglicherweise MariaDB und nicht MySQL?
Vor kurzem sind wir beim Aktualisieren von Magento auf 2.3.2 auf einem Server auf ein seltsames Problem mit Einschränkungen gestoßen.
Ich konnte das Problem nicht lokal reproduzieren. Das heißt, bis ich von MySQL 5.7 zu MariaDB 10.2 gewechselt bin.
Ich vermute, dass Magento während des Updates zweimal Einschränkungen hinzufügen / entfernen muss, dies aber wahrscheinlich in der falschen Reihenfolge. Könnte irgendwie damit zusammenhängen, dass beide Module ein
db_schema.xml
und enthalten,db_schema_whitelist.json
aber ich habe nicht weiter nachgeforscht.Jedenfalls scheint es mir, dass MySQL in diesen Fällen einfach keinen Fehler auslöst, und für mich scheint es zu diesem Zeitpunkt die bessere Wahl für M2 zu sein.
quelle