it-swarm-id.com

File Migrasi - posting pembaruan pembuatan skrip migrasi sql

Saya mencari cara yang terorganisir untuk menjalankan pembaruan joomla secara lokal dan kemudian memperbarui sistem produksi dengan menggunakan penyebaran kode + migrasi db, sehingga saya tidak perlu memperbarui joomla pada produksi, atau menonaktifkan situs saat menjalankan pembaruan. Komponen pembaruan saat ini menggunakan fungsi spesifik untuk menjalankan pembaruan sql

https://github.com/joomla/joomla-cms/blob/staging/administrator/components/com_joomlaupdate/models/default.php#L515

Dalam finaliseUpgrade sepertinya mengambil/menguraikan beberapa pertanyaan dan menerapkannya ke skema. Jika saya memahami ini dengan benar, loop melalui skrip/place holder di com_admin/sql/{DBType}/*. Sql mendeteksi semua versi baru dari file sql yang harus dijalankan pada db.

Masalah dengan skrip ini adalah bahwa saya tidak melihat bagaimana saya dapat menggunakannya sebagai alat migrasi untuk database produksi saya karena mereka diawali dengan tabel dan juga saya lebih suka memiliki satu skrip migrasi konsolidasi.

Bisakah Anda menyarankan jika joomla benar-benar menulis perubahan yang dilakukan di suatu tempat dalam file migrasi?

File log/joomla_update.php berisi beberapa jejak perubahan tetapi ini terpotong karena tampaknya hanya mencatat beberapa karakter

Setiap saran sangat dihargai.

3
Bizmate

Dua skenario:

Pengembangan, Penulisan Staging, Produksi

Produksi hanya baca, Pementasan adalah tempat konten disiapkan dan tes dilakukan. Joomla selalu diperbarui pada Pementasan, maka db disimpan bersama dengan komit, dan dikembalikan pada saat tarikan produksi.

Pengembangan, Pementasan, Produksi

Konten diedit pada Produksi. Pembaruan Joomla dilakukan pada Pementasan. Setelah Anda Push mereka, cukup buka ekstensi/database dan tekan Perbaiki. Atau, untuk server yang lebih besar, otomatisasi dengan plugin sistem (tulis plugin yang mendengarkan beberapa param di onAfterRoute, periksa apakah itu panggilan lokal ($ _SERVER ['REMOTE_ADDR'] = '127.0.0.1' dan jadwalkan pekerjaan cron untuk aktifkan itu).

Perbarui

Untuk melakukan pembaruan db setelah setiap peningkatan versi, Anda memiliki dua cara:

Otomatis

Buka administrator - ekstensi - pengelola ekstensi, klik basis data di sebelah kiri, dan klik "Perbaiki" di atas.

Jika halaman ini memiliki kesalahan (case ketika meningkatkan dari 2.5 ke 3.3), coba langsung ke url:

/administrator/index.php?option=com_installer&view=database

Manual

Ketika hal di atas gagal, (lihat juga @ komentar Diego di bawah):

 find administrator/components/com_admin/sql/updates/mysql/3*.sql | grep mysql > 33.listsql

dan memilih file yang relevan (versi yang terpengaruh ada dalam nama file)

Kemudian, asalkan j25 adalah awalan db Anda

cat 33.listsql | xargs cat > 33.sql
sed -i 's/#_/j25/' 33.sql
mysql -u user --password="somepass" dbname < 33.sql
1
Riccardo Zorn