Al mirar la estructura de la customer_entity
mesa, me di cuenta el created_at
campo tiene este atributo: on update CURRENT_TIMESTAMP
. Por lo tanto, cada vez que se actualiza la fila, la created_at
marca de tiempo cambia.
Parece que este atributo debería existir en el updated_at
campo, no en el created_at
campo. Sé que es raro que esta tabla se modifique directamente debido a la estructura EAV, pero aún parece incorrecto modificar el created_at
campo.
¿Hay alguna razón para esta estructura de tabla, o es solo un error?
Editar: Encontré un informe de error confirmado de Magento para esto. Edición # 27944. Desafortunadamente, debe iniciar sesión para verlo. http://www.magentocommerce.com/bug-tracking/issue?issue=13882
magento-1.7
Ryre
fuente
fuente
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
. Puede haber otros también. Perdí interés en algún momento, mientras los buscaba.sales_flat_quote
Primero me di cuenta , luego comprobécustomer_entity
. Acabamos de notarlo porque algunos de nuestros informes no tenían ningún sentido. ¿Puede esto realmente ser un error?Respuestas:
Aquí está lo que encontré. El problema solo aparece en Magento CE 1.6+ (y las versiones EE correspondientes). Se debe a los nuevos scripts de instalación / actualización que utilizan DDL en combinación con mysql.
En versiones anteriores a 1.6, así es como se veían las columnas
created_at
yupdated_at
:En 1.6+ el ddl se ve así:
y genera:
La diferencia es que
default
falta el valor.Y, como se describe aquí ,
Y dado que MySQL solo permite una columna de marca de tiempo con el
CURRENT_TIMESTAMP
valor predeterminado o paraon update
, lacreated_at
columna termina así.Este es definitivamente un error de Magento.
fuente
created_at
marca de tiempo NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMENTARIO 'Creado en'. Y en las notas de la versión, se menciona que la fecha "El" cliente desde "es correcta".`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Created At'
En primer lugar, lea la respuesta de Marius para ver qué sucede en la base de datos.
Solo quería mencionar que la mayoría de los desarrolladores no se encontrarán con este problema si su modelo se extiende correctamente
Mage_Core_Model_Abstract
. La pila se ve así:Your_Model::save
llamadasMage_Core_Model_Abstract::save
llamadasMage_Eav_Model_Entity_Abstract::save
llamadasMage_Eav_Model_Entity_Abstract::_beforeSave
llamadasMage_Eav_Model_Entity_Abstract::walkAttributes
llamadasMage_Eav_Model_Entity_Attribute_Backend_Time_Created::beforeSave
Esto hace lo siguiente:
Solo tenga en cuenta que esto puede tener problemas para algunas configuraciones regionales en CE> = 1.8.xy EE> = 1.13.x.
fuente
Nosotros también encontramos este error y creemos que se basa en la diferencia entre la codificación de fechas de EE. UU. Y Europa.
En los Estados Unidos, las fechas se escriben MM-DD-AAAA. (02-10-2015 = 10 de febrero de 2015). Pero en Europa y en muchos otros lugares, las fechas están escritas DD-MM-AAAA. (02-10-2015 = 2 de octubre de 2015 o 2 de octubre de 2015).
Si bien Magento tiene su sede en los EE. UU., Gran parte del desarrollo fue realizado por programadores en Ucrania.
Hemos solucionado este error con una extensión gratuita de Magento (para que no tenga que cambiar ningún código de núcleo de Magento). Lo hemos puesto en nuestro sitio como descarga gratuita: http://www.CustomerParadigm.com/download/Magento-Date-Switch-Fix-Extension.zip
He cubierto esto con más detalle en nuestro blog aquí: http://www.customerparadigm.com/magento-bug-magento-customer-create-date-juxtaposition/
fuente
ce 1.9 ha corregido el error en ce 1.8.1 A continuación se muestra la diferencia:
fuente