Lorsque l'on regarde la structure de la customer_entity
table, j'ai remarqué le created_at
champ a cet attribut: on update CURRENT_TIMESTAMP
. Ainsi, chaque fois que la ligne est mise à jour, l' created_at
horodatage change.
Il semble que cet attribut devrait exister sur le updated_at
terrain, pas sur le created_at
terrain. Je sais qu'il est rare que ce tableau soit directement modifié en raison de la structure de l'EAV, mais il semble toujours mal de jamais modifier le created_at
champ.
Y a-t-il une raison à cette structure de table, ou s'agit-il simplement d'un bug?
Edit: J'ai trouvé un rapport de bogue confirmé de Magento pour cela. Numéro # 27944. Malheureusement, vous devez vous connecter pour le voir. http://www.magentocommerce.com/bug-tracking/issue?issue=13882
la source
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
. Il pourrait y en avoir d'autres aussi. J'ai un peu perdu l'intérêt à un moment donné, en les recherchant.sales_flat_quote
abord, puis vérifiécustomer_entity
. Nous venons de le remarquer parce que certains de nos rapports n'avaient aucun sens. Cela peut-il vraiment être un bug?Réponses:
Voici ce que j'ai trouvé. Le problème n'apparaît que sur Magento CE 1.6+ (et les versions EE correspondantes). C'est à cause des nouveaux scripts d'installation / mise à niveau utilisant DDL en combinaison avec mysql.
Dans les versions antérieures à 1.6, voici à quoi ressemblaient les colonnes
created_at
etupdated_at
:Dans 1.6+, le ddl ressemble à ceci:
et génère:
La différence est que la
default
valeur est manquante.Et, comme décrit ici ,
Et puisque MySQL n'autorise qu'une seule colonne d'horodatage avec
CURRENT_TIMESTAMP
comme valeur par défaut ou pouron update
, lacreated_at
colonne se retrouve avec ceci.Il s'agit définitivement d'un bug Magento.
la source
created_at
horodatage NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Created At'. Et dans les notes de mise à jour, il est mentionné que "La date du" client depuis "est correcte."`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Created At'
Tout d'abord, lisez la réponse de Marius pour voir ce qui se passe dans la base de données.
Je voulais juste mentionner que la plupart des développeurs ne rencontreront pas ce problème si leur modèle s'étend correctement
Mage_Core_Model_Abstract
. La pile ressemble à ceci:Your_Model::save
appelsMage_Core_Model_Abstract::save
appelsMage_Eav_Model_Entity_Abstract::save
appelsMage_Eav_Model_Entity_Abstract::_beforeSave
appelsMage_Eav_Model_Entity_Abstract::walkAttributes
appelsMage_Eav_Model_Entity_Attribute_Backend_Time_Created::beforeSave
Cela fait ce qui suit:
Notez simplement que cela peut avoir des problèmes pour certains paramètres régionaux dans CE> = 1.8.x et EE> = 1.13.x.
la source
Nous aussi, nous avons trouvé ce bogue et pensons qu'il est basé sur la différence entre l'encodage de date américain et européen.
Aux États-Unis, les dates sont écrites MM-DD-YYYY. (02-10-2015 = 10 février 2015). Mais en Europe et dans bien d'autres endroits, les dates sont écrites DD-MM-YYYY. (02-10-2015 = 2 octobre 2015, ou 2 octobre 2015).
Alors que Magento est basé aux États-Unis, une grande partie du développement a été réalisée par des programmeurs en Ukraine.
Nous avons corrigé ce bogue avec une extension Magento gratuite (afin que vous n'ayez pas à changer de code Magento Core). Nous l'avons mis sur notre site en téléchargement gratuit: http://www.CustomerParadigm.com/download/Magento-Date-Switch-Fix-Extension.zip
J'ai couvert cela plus en détail sur notre blog ici: http://www.customerparadigm.com/magento-bug-magento-customer-create-date-juxtaposition/
la source
ce 1.9 a corrigé le bogue dans ce 1.8.1 Voici le diff:
la source