Wenn bei der Struktur der Suche customer_entity
Tisch, bemerkte ich das created_at
Feld dieses Attribut hat: on update CURRENT_TIMESTAMP
. Jedes Mal, wenn die Zeile aktualisiert wird, created_at
ändert sich der Zeitstempel.
Anscheinend sollte dieses Attribut auf dem updated_at
Feld vorhanden sein, nicht auf dem created_at
Feld. Ich weiß, es ist selten, dass diese Tabelle aufgrund der EAV-Struktur direkt geändert wird, aber es scheint immer noch falsch, das created_at
Feld jemals zu ändern .
Gibt es einen Grund für diese Tabellenstruktur oder ist es nur ein Fehler?
Bearbeiten: Ich habe einen bestätigten Fehlerbericht von Magento dafür gefunden. Ausgabe # 27944. Leider musst du dich einloggen, um es zu sehen. http://www.magentocommerce.com/bug-tracking/issue?issue=13882
quelle
cron_schedule
,api_user
,admin_user
,customer_entity_address
,downloadable_link_purchased
,downloadable_link_purchased_item
,index_event
,eav_entity
log_customer
,sales_flat_quote_address
,sales_flat_quote
,sales_flat_quote_address_item
,sales_flat_quote_payment
,sales_flat_quote_shipping_rate
,sales_recurring_profile
. Es könnte auch andere geben. Irgendwann verlor ich das Interesse, als ich nach ihnen suchte.sales_flat_quote
zuerst und überprüfte es danncustomer_entity
. Wir haben es nur bemerkt, weil einige unserer Berichte keinen Sinn ergaben. Kann das wirklich ein Bug sein?Antworten:
Hier ist was ich gefunden habe. Das Problem tritt nur bei Magento CE 1.6+ (und entsprechenden EE-Versionen) auf. Dies liegt an den neuen Installations- / Upgrade-Skripten, die DDL in Kombination mit MySQL verwenden.
In Versionen vor 1.6 sahen die Spalten
created_at
und folgendermaßenupdated_at
aus:In 1.6+ sieht die ddl so aus:
und erzeugt:
Der Unterschied besteht darin, dass der
default
Wert fehlt.Und, wie hier beschrieben ,
Und da MySQL nur eine Zeitstempelspalte
CURRENT_TIMESTAMP
als Standard oder für zulässton update
,created_at
endet die Spalte so.Dies ist definitiv ein Magento-Fehler.
quelle
created_at
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Created At'. In den Versionshinweisen wird erwähnt, dass das Datum "Kunde seit" korrekt ist.`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Created At'
Lesen Sie zuerst die Antwort von Marius, um zu sehen, was in der Datenbank passiert.
Ich wollte nur erwähnen, dass die meisten Entwickler nicht auf dieses Problem stoßen, wenn ihr Modell ordnungsgemäß erweitert wird
Mage_Core_Model_Abstract
. Der Stack sieht folgendermaßen aus:Your_Model::save
AnrufeMage_Core_Model_Abstract::save
AnrufeMage_Eav_Model_Entity_Abstract::save
AnrufeMage_Eav_Model_Entity_Abstract::_beforeSave
AnrufeMage_Eav_Model_Entity_Abstract::walkAttributes
AnrufeMage_Eav_Model_Entity_Attribute_Backend_Time_Created::beforeSave
Dies bewirkt Folgendes:
Beachten Sie, dass dies bei einigen Ländereinstellungen sowohl in CE> = 1.8.x als auch in EE> = 1.13.x Probleme verursachen kann.
quelle
Auch wir haben diesen Fehler gefunden und glauben, dass er auf dem Unterschied zwischen der Datumskodierung in den USA und in Europa beruht.
In den USA sind die Daten in MM-TT-JJJJ angegeben. (02.10.2015 = 10.02.2015). In Europa und vielen anderen Ländern sind die Daten jedoch TT-MM-JJJJ. (02-10-2015 = 2. Oktober 2015 oder 2. Oktober 2015).
Während Magento in den USA ansässig ist, wurde ein Großteil der Entwicklung von Programmierern in der Ukraine durchgeführt.
Wir haben diesen Fehler mit einer kostenlosen Magento-Erweiterung behoben (damit Sie keinen Magento-Core-Code ändern müssen). Wir haben es auf unserer Website als kostenlosen Download bereitgestellt: http://www.CustomerParadigm.com/download/Magento-Date-Switch-Fix-Extension.zip
Ich habe dies in unserem Blog hier ausführlicher behandelt: http://www.customerparadigm.com/magento-bug-magento-customer-create-date-juxtaposition/
quelle
ce 1.9 habe den Fehler in ce 1.8.1 behoben. Unten ist der Unterschied:
quelle