Ketika melihat struktur customer_entity
tabel, saya melihat created_at
bidang memiliki atribut ini: on update CURRENT_TIMESTAMP
. Jadi, setiap kali baris diperbarui, created_at
cap waktu akan berubah.
Sepertinya atribut ini harus ada di updated_at
lapangan, bukan di created_at
lapangan. Saya tahu jarang bahwa tabel ini secara langsung dimodifikasi karena struktur EAV, tetapi tampaknya masih salah untuk pernah memodifikasi created_at
bidang.
Apakah ada alasan untuk struktur tabel ini, atau hanya bug?
Sunting: Saya menemukan laporan bug yang dikonfirmasi dari Magento untuk ini. Edisi # 27944. Sayangnya, Anda harus masuk untuk melihatnya. http://www.magentocommerce.com/bug-tracking/issue?issue=13882
magento-1.7
Ryre
sumber
sumber
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
. Mungkin ada yang lain juga. Saya agak kehilangan minat pada satu titik, saat mencari mereka.sales_flat_quote
dulu, lalu diperiksacustomer_entity
. Kami hanya memperhatikannya karena beberapa laporan kami tidak masuk akal. Apakah ini benar-benar bug?Jawaban:
Inilah yang saya temukan. Masalahnya hanya muncul di Magento CE 1.6+ (dan versi EE yang cocok). Itu karena skrip install / upgrade baru menggunakan DDL dalam kombinasi dengan mysql.
Dalam versi sebelum 1.6 ini adalah bagaimana
created_at
danupdated_at
kolom terlihat seperti:Dalam 1.6+ ddl terlihat seperti ini:
dan menghasilkan:
Perbedaannya adalah bahwa
default
nilainya hilang.Dan, seperti yang dijelaskan di sini ,
Dan karena MySQL hanya mengizinkan satu kolom stempel waktu dengan
CURRENT_TIMESTAMP
sebagai default atau untukon update
,created_at
kolom berakhir dengan seperti ini.Ini jelas merupakan bug Magento.
sumber
created_at
timestamp BUKAN NULL DEFAULT CURRENT_TIMESTAMP TENTANG PEMBARUAN CURRENT_TIMESTAMP KOMENTAR 'Created At'. Dan dalam catatan rilis, disebutkan bahwa "Pelanggan sejak" tanggal benar. "`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Created At'
Pertama-tama, baca jawaban Marius untuk melihat apa yang terjadi di database.
Saya hanya ingin menyebutkan bahwa sebagian besar pengembang tidak akan mengalami masalah ini jika model mereka benar-benar meluas
Mage_Core_Model_Abstract
. Tumpukannya terlihat seperti ini:Your_Model::save
panggilanMage_Core_Model_Abstract::save
panggilanMage_Eav_Model_Entity_Abstract::save
panggilanMage_Eav_Model_Entity_Abstract::_beforeSave
panggilanMage_Eav_Model_Entity_Abstract::walkAttributes
panggilanMage_Eav_Model_Entity_Attribute_Backend_Time_Created::beforeSave
Ini melakukan hal berikut:
Harap perhatikan bahwa ini dapat memiliki masalah untuk beberapa lokal di CE> = 1.8.x dan EE> = 1.13.x.
sumber
Kami juga menemukan bug ini, dan berpikir bahwa itu didasarkan pada perbedaan antara pengkodean tanggal AS dan Eropa.
Di Amerika Serikat, tanggal ditulis MM-DD-YYYY. (02-10-2015 = 10 Feb 2015). Tetapi di Eropa dan banyak tempat lainnya, kurma ditulis DD-MM-YYYY. (02-10-2015 = 2 Oktober 2015, atau 2 Oktober 2015).
Sementara Magento berbasis di AS, sebagian besar pengembangan dilakukan oleh programmer di Ukraina.
Kami telah memperbaiki bug ini dengan ekstensi Magento gratis (sehingga Anda tidak perlu mengubah Kode Inti Magento). Kami telah memasangnya di situs kami sebagai unduhan gratis: http://www.CustomerParadigm.com/download/Magento-Date-Switch-Fix-Extension.zip
Saya telah membahas ini secara lebih rinci di blog kami di sini: http://www.customerparadigm.com/magento-bug-magento-customer-create-date-juxtaposition/
sumber
ce 1.9 telah memperbaiki bug di ce 1.8.1 Di bawah ini adalah diff:
sumber