Kami memiliki masalah ini:
Seorang klien membuat tokonya ditingkatkan dari CE 1.4 ke CE 1.8. Pemutakhiran file berjalan dengan baik, dan pemutakhiran basis data berjalan dengan baik di mesin pengembangan kami.
Ketika kami mencoba memutakhirkan live-db klien di live-machine-nya (hubungkan 1,8-Magento ke database dan buka di browser), proses tampaknya berjalan untuk sementara waktu dan berakhir pada kesalahan 500.
Log kesalahan PHP kosong; karena ini adalah host bersama, kami tidak dapat mengubah pengaturan apache atau mysql; sang hoster, meskipun "hosting khusus im magento", tidak mau mengubah pengaturan dan memberi tahu saya bahwa saya dapat menyelesaikan pemutakhiran basis data dengan berulang kali menyegarkan jendela peramban ketika kesalahan 500 terjadi, karena magento kemudian akan ditingkatkan dalam langkah-langkah kecil . Ini bisa berlangsung berjam-jam.
Pertanyaan saya sekarang adalah:
- Apakah ini benar? Saya pikir sql-statement untuk pemutakhiran basis data akan dibungkus dalam suatu transaksi, sehingga mereka dapat dikembalikan jika ada masalah.
- Bisakah jawaban memberikan petunjuk di mana saya dapat melihat kode untuk menemukan jawaban untuk pertanyaan ini?
Terima kasih atas waktunya!
sumber
Jawaban:
Naluri rekayasa Anda bagus, tetapi apa yang terjadi di dunia nyata pemrograman startup bisnis lebih rumit / jelek.
Sistem sumber daya pengaturan Magento tidak membungkus masing-masing skrip dalam suatu transaksi. Ada banyak alasan untuk ini, tapi saya selalu berasumsi yang utama adalah Magento mulai hidup terikat secara eksplisit dengan MySQL, dan banyak / sebagian besar pernyataan definisi data (
ALTER TABLE
, dll) di MySQL menyebabkan komit implisit .Meskipun Anda akan menemukan sumber daya pengaturan individual terkadang menggunakan transaksi.
sistem itu sendiri hanya menjalankan skrip dan berharap yang terbaik.
Jika Anda tertarik pada kode yang menjalankan sumber daya ini, tempat terbaik untuk memulai mungkin ada di sini
The
_modifyResourceDb
Metode adalah salah satu yang termasuk script sumber daya sebenarnya setupSolusi yang sangat rumit untuk masalah Anda akan menjadi core-hack / code-pool-override sementara yang secara eksplisit keluar setelah 5-10 mencakup, dan menjalankannya kembali. Ini akan mengurangi kemungkinan skrip sumber daya pengaturan yang ditebus setengah jalan.
Solusi yang lebih baik, dan salah satu proyek "mungkin satu hari" pribadi saya akan menjadi skrip khusus yang menggunakan metode inti Magento untuk memeriksa pembaruan yang perlu diterapkan, mendaftar, dan membiarkan pengguna menjalankannya satu per satu.
sumber