OJS 2 to OJS 3 Upgrade Guide
Version 1.2
July 17, 2024
Copyright: Public Knowledge Project
This work is openly licensed via
CC BY-NC-SA
-
This guide provides an overview of best practices for upgrading Open Journal Systems (OJS) version 2.x to version 3.3.0, including troubleshooting guidelines for common upgrade problems. It is intended as a complementary guide to the How to Upgrade and Troubleshooting documentation. Before proceeding, please review this documentation to learn about the OJS upgrade workflow and how to work with your OJS installation.
-
Prerequisites: Backups and Environment
In preparation for the workflow documented below, you will need to complete a full backup of your OJS install before starting. In addition to this initial backup, you will need to take a full backup of your OJS install after each upgrade step has been completed. These backups will allow you to revert your install to a previous version if needed, make required adjustments to your install to fix upgrade errors, and then try the upgrade step again. The How to Upgrade documentation includes detailed instructions for backing up your OJS install. If you need to restore your install to a pre-upgrade version, the OJS config file, database, as well as the private and public files folders will need to be restored from backup.
If an upgrade fails with an error message, times out, or doesn’t full complete, you will need to revert your OJS install to the pre-upgrade version using your backup. After you have reverted your install to the pre-upgrade version, you will need to resolve the upgrade errors, and then try another upgrade attempt. This process may need to be repeated several times until the upgrade completes successfully. An upgrade will be successful if you see the following message: Successfully upgraded to version X.X.X.X
It is recommended that each upgrade step documented below is executed directly on the server via the command-line rather than via the web browser. This will allow you to control and monitor the execution of the OJS upgrade script. To ensure that the upgrade script has adequate memory available and does not time out, the following PHP CLI settings are recommended when running the OJS upgrade script:
php -d memory_limit=-1 tools/upgrade.php upgrade
Prerequisites: OJS Database
Character Encoding and Collation Settings
Before starting, inspect your OJS database and take note of your MySQL character set and collation settings:
SHOW VARIABLES LIKE 'char%';
-SHOW VARIABLES LIKE 'collation%';
The result of the first query will confirm if you are using the latin1
, utf8
or utf8mb4
character set in MySQL. The result of the second query will provide you with information about your MySQL collation settings. Your MySQL connection and collation settings should be consistent with your OJS database character set.
For example, if your OJS database is using the latin1
character set, then you should also be using a compatible collation, e.g. latin1_general_ci
or latin1_swedish_ci
. Alternatively, if your OJS database is using the legacy utf8
character encoding, then the collation should be utf8_general_ci
or utf8_unicode_ci
. And if your OJS database is using the newer utf8mb4
character set then you should be using one of the supported collations for this character set, e.g. utf8mb4_general_ci
or utf8mb4_0900_ai_ci
.
Delete Search Index Data
The OJS search index tables contain a lot of data and this data should be deleted from your OJS database before starting the OJS 2.x upgrade process. This will significantly reduce the size of the OJS database and will reduce the time to execute upgrade steps and to create backups of your OJS install. After the final upgrade step to OJS 3.3.0 has been completed, the search indexes will be rebuilt, which will re-populate the search index tables in your OJS database (no data will be lost).
To delete search index data from your OJS database you will need to connect to your OJS database and execute the following MySQL commands:
TRUNCATE submission_search_objects;
+Panduan Upgrade OJS 2 ke OJS 3
Versi 1.2
17 Juli 2024
Hak Cipta: Public Knowledge Project
Karya ini dilisensikan secara terbuka melalui
CC BY-NC-SA
Diterjemahkan oleh Maria Lamury dan Dwi Fajar Saputra
+
Panduan ini memberikan best practice untuk melakukan upgrade Open Journal System (OJS) versi 2.x ke versi 3.3.0 (LTS), termasuk pedoman troubleshooting untuk masalah upgrade yang sering terjadi. Panduan ini digunakan sebagai panduan pendukung pada dokumentasi How to Upgrade dan How to Upgrade and Troubleshooting. Sebelum melanjutkan, review dokumentasi ini untuk mempelajari tentang alur kerja upgrade OJS dan cara bekerja dengan instalasi OJS Anda.
+
+
+Syarat Utama: Pencadangan Data (Backup) dan Perangkat Pendukung
+Sebagai persiapan untuk alur kerja di bawah ini, Anda harus menyelesaikan keseluruhan proses backup dari instalasi OJS yang telah Anda gunakan di production. Selain backup awal ini, Anda perlu melakukan backup secara menyeluruh dari bagian OJS yang sudah dilakukan instalasi, jika sudah selesai upgrade mohon dapat melakukan backup juga secara bertahap.
+Kegunaan dari backup pada kasus ini akan memungkinkan Anda dapat mengembalikan instalasi ke versi sebelumnya jika diperlukan (restore), membuat penyesuaian yang diperlukan pada instalasi Anda untuk memperbaiki error upgrade, dan kemudian dapat melakukan upgrade kembali. Dokumentasi How to Upgrade mencakup instruksi detail untuk backup instalasi OJS Anda. Jika Anda perlu memulihkan instalasi Anda ke versi pra-upgrade, file config OJS, database, serta folder files yang berisi berbagai file seperti draft artikel, artikel yang diterbitkan dan lain-lain perlu dikembalikan dari hasil yang sudah di-backup.
+
+Jika upgrade gagal dengan pesan error, atau notifikasi lain sehingga upgrade tidak selesai dengan sepenuhnya, Anda harus mengembalikan instalasi OJS ke versi pra-upgrade menggunakan backup Anda. Setelah Anda mengembalikan instalasi ke versi pra-upgrade, Anda perlu mengatasi error upgrade, lalu mencoba upgrade kembali. Proses ini mungkin perlu diulang beberapa kali (trial error) hingga upgrade berhasil diselesaikan. Upgrade akan berhasil jika Anda melihat pesan berikut:
+Successfully upgraded to version X.X.X.X
+Disarankan agar setiap langkah upgrade yang didokumentasikan di bawah ini dijalankan langsung pada server melalui command-line, bukan melalui web browser. Ini akan memungkinkan Anda untuk mengontrol dan memantau pelaksanaan kode skrip upgrade OJS. Untuk memastikan bahwa proses upgrade memiliki memori yang memadai dan tidak habis waktu (run time error), pengaturan PHP CLI berikut disarankan saat menjalankan kode skrip upgrade OJS:
php -d memory_limit=-1 tools/upgrade.php upgrade
Syarat Utama: Database OJS
Pengkodean Karakter dan Pengaturan Collation
Sebelum memulai, periksa database OJS Anda dan catat penggunaan karakter MySQL dan pengaturan Collation Anda:
SHOW VARIABLES LIKE 'char%';
+SHOW VARIABLES LIKE 'collation%';
+Hasil kueri pertama akan mengkonfirmasi apakah Anda menggunakan kumpulan karakter latin1
, utf8
atau utf8mb4
di MySQL. Hasil kueri kedua akan memberi informasi tentang pengaturan collation MySQL Anda. Koneksi MySQL dan pengaturan collation harus konsisten dengan kumpulan karakter database OJS Anda.
Misalnya, jika database OJS menggunakan kumpulan karakter latin1
, maka Anda juga harus menggunakan collation yang kompatibel, misalnya latin1_general_ci
atau latin1_swedish_ci
. Alternatif lain, jika database OJS Anda menggunakan pengkodean karakter utf8
yang lama, susunannya harus utf8_general_ci
atau utf8_unicode_ci
. Dan jika database OJS menggunakan kumpulan karakter utf8mb4
yang lebih baru maka Anda harus menggunakan salah satu kumpulan karakter yang didukung untuk kumpulan karakter ini, misalnya. utf8mb4_general_ci
atau utf8mb4_0900_ai_ci
.
+
+Hapus Tabel Indeks Pencarian
+Tabel indeks pencarian OJS berisi banyak data dan data ini harus dihapus dari database OJS Anda sebelum memulai proses upgrade OJS 2.x. Hal ini akan mengurangi ukuran database OJS secara signifikan, mengurangi waktu untuk menjalankan langkah-langkah upgrade dan membuat backup instalasi OJS Anda. Setelah langkah terakhir upgrade ke OJS 3.3.0 selesai, indeks pencarian akan bekerja kembali, yang akan mengisi kembali tabel indeks pencarian pada database OJS Anda (tidak ada data yang akan hilang).
Untuk menghapus data indeks pencarian dari database OJS Anda, Anda perlu terhubung ke database OJS dan menjalankan perintah kueri MySQL berikut:
TRUNCATE submission_search_objects;
TRUNCATE submission_search_object_keywords;
-TRUNCATE submission_search_keyword_list;
Determine MySQL Engine
OJS 3.3.0 cannot be used with the MySQL MyISAM
engine and requires InnoDB
database tables. To check if you need to convert your existing MyISAM
tables to InnoDB
, connect to your OJS database and run the following query, replacing OJS_DBNAME
with the name of your OJS database:
SELECT DISTINCT Engine, COUNT(0) FROM information_schema.tables WHERE table_schema = 'OJS_DBNAME'
If the Engine
column in the query result includes MyISAM
then you will need to convert your MyISAM
databases tables to InnoDB
using the workflow described in the “Convert MyISAM to InnoDB Tables” section below. Conversely, if the Engine
column in the query result includes only the InnoDB
engine then no table conversion is needed and you can proceed directly to the section “Grant REFERENCES Privilege”.
Convert MyISAM to InnoDB Tables
This workflow only needs to be completed if you have confirmed that you have one or more MyISAM
tables in your OJS database. To convert your OJS 2.x database from MyISAM
tables to InnoDB
tables you will need to complete the following steps:
- Dump your OJS database into a text file, e.g. via
mysqldump
- Open the database dump text file using a UTF8-compatible text editor, e.g.
vi
- Replace all
MyISAM
with InnoDB
table definitions in the database dump
- Save the updated database dump text file
- Import the updated database dump into a new OJS database
The following workflow describes each of the above steps in detail.
First, you will need to generate a database dump for your OJS database and save it to a text file, e.g. ojs_database.sql
Now you can convert all table definitions in the database dump file using a text editor. For example, in the vi
text editor you can open your MySQL database dump and execute the following search-and-replace command. The goal is to replace each MyISAM
table definition with the InnoDB
engine for all MyISAM
database tables. You will be prompted to review and confirm each replacement for each table definition.
:%s/ENGINE=MyISAM/ENGINE=InnoDB/gc
The next step will be to delete your OJS database in MySQL since it will still contain the legacy MyISAM
table definitions. We will then create a new OJS database to receive the updated InnoDB
table definitions and import the converted database dump file into the new OJS database.
To delete your existing OJS database and create a new, empty OJS database, the following MySQL commands will need to be executed using a MySQL user account with DROP
and CREATE
privileges, e.g. either the OJS MySQL user or the MySQL root user.
You will need to replace your database name OJS_DBNAME
and character set OJS_DBCHARSET
with their actual values:
DROP DATABASE OJS_DBNAME;
-CREATE DATABASE OJS_DBNAME DEFAULT CHARSET 'OJS_DBCHARSET';
Now that you have a new, empty OJS database, you can import your OJS database data using the updated MySQL database dump file that includes the new InnoDB
table definitions.
For the MySQL import command below, you will need to replace your database connection settings OJS_DBNAME
and OJS_DBUSER
, character set setting OJS_DBCHARSET
, and database dump filename OJS_DBDUMPFILE
with their actual values:
mysql OJS_DBNAME -u OJS_DBUSER -p --default-character-set=OJS_DBCHARSET < OJS_DBDUMPFILE
You will be prompted for the database password for the OJS MySQL user as defined in your OJS config.inc.php
file. Depending on the size of your OJS database, the import command may require substantial time to complete, e.g. up to 1 hour or more for very large databases.
Grant REFERENCES Privilege
The OJS database user will need the REFERENCES
privilege granted via MySQL in preparation for the upgrade to OJS 3.3.0.
The MySQL command below will need to be executed using a MySQL user account with the GRANT
privileges, e.g. the MySQL root user account. You will need to replace OJS_DBNAME
, OJS_DBUSER
, and OJS_DBPASSWD
with the values for your OJS database as defined in config.inc.php
:
GRANT REFERENCES ON OJS_DBNAME.* TO OJS_DBUSER@'localhost' IDENTIFIED BY 'OJS_DBPASSWD';
Preparation Checklist
Before proceeding to the first upgrade step, the following tasks should now be completed:
- Backup OJS 2.x webroot, files folder, public folder, and database
- Determine OJS database character set and collations settings
- Delete search index data from the OJS database
- Ensure all tables are using the InnoDB engine in the OJS database
- Grant REFERENCES privilege to the OJS database user
First Steps: Getting to OJS 2.4.8-5
If your install is running a version older than OJS 2.4.6 then you will first need to upgrade it to OJS 2.4.6. Versions older than OJS 2.4.6 are missing a required column in the sessions
table and the upgrade to OJS 2.4.6 adds this missing column.
If your install is running OJS 2.4.6 or newer, you will need to upgrade it to OJS 2.4.8-5. This upgrade will need to be run using a legacy version of PHP 7.x (PHP 8.x will not work).
Safety Bridge: OJS 3.2.1-5
Once your install is running OJS 2.4.8-5, you are ready to make the jump to OJS 3.2.1-5.
If your journal publishes article cover images, please ensure that you apply this patch to your OJS 3.2.1-5 install if you are deploying it via the release tarball. The patch was added after OJS 3.2.1-5 was released and provides a fix for an OJS 2.x upgrade bug with article cover images.
Before you begin the upgrade to OJS 3.2.1-5, you will need to review your OJS 2.4.8-5 supplementary files.
Supplementary Files: Submission Files or Public Galleys?
In preparation for the OJS 3.2.1-5 upgrade, you will need to decide how supplementary files should be migrated from OJS 2.4.8-5. By default, the OJS 3.2.1-5 upgrade will convert all supplementary files into article galleys that will be accessible to readers via the article landing page.
Depending on how editors and authors have been using supplementary files in OJS 2.x, this conversion to article galleys may not be appropriate or well suited for your journal. For example, some journals running OJS 2.x use supplementary files to store author agreements, competing interest statements, and lists of recommended reviewers — these documents are considered private and are not intended for public access. In OJS 2.x, if a journal disabled the Reading Tools feature then links to supplementary files were excluded from the article landing page.
If you wish to disable the conversion of supplementary files to public galleys during the upgrade to OJS 3.2.1-5, and instead convert supplementary files to private submission files in OJS 3.2.1-5, then you will need to apply a patch to your OJS 3.2.1-5 install before starting the upgrade from OJS 2.4.8-5.
After the upgrade to OJS 3.2.1-5 has been completed, please review a sample of articles that include supplementary files to ensure that these files have been migrated correctly from OJS 2.4.8-5, i.e. to ensure that supplementary files are either publicly visible as article galleys or hidden from public access and stored as private submission files in OJS 3.2.1-5.
Final Step: OJS 3.3.0
Once you have successfully upgraded to OJS 3.2.1-5 then you can upgrade to the latest OJS 3.3.0 release, which includes long-term support from PKP.
In general, the upgrade from OJS 3.2.1 to OJS 3.3.0 should finish relatively quickly since there are no updates to the OJS private files folder where submission files and galley files are stored.
Rebuild Search Index
Since we deleted the OJS search index data before starting the upgrade workflow, we now need to rebuild the search index via the following PHP command, executed in the OJS webroot folder:
php tools/rebuildSearchIndex.php
Troubleshooting Common Problems
Plugin Version Errors
- Problem: The last step in the upgrade,
addPluginVersions
, will fail if there is a plugin in the OJS plugins folder that is out of sync with the plugin version in the database. If the plugin version in the plugins folder is older than the plugin version recorded in the database, the OJS upgrade script will return a “Cannot Downgrade Plugin” error.
- Solution: Since updating plugin versions is the last step in the OJS upgrade script, the above error indicates that OJS has completed the upgrade with the exception of final plugin version checks. At this stage you can proceed in one of two ways:
- Manually update the OJS
versions
table and insert a new row for the OJS 3.3.0 version, ensuring that you mark this version of OJS as the current version. This will manually finalize the upgrade to OJS 3.3.0.
You can do this by running the following two MySQL queries:
UPDATE versions SET current = '0' WHERE product = ‘ojs2’;
In the MySQL query below, please adjust the four OJS version parameters to match the actual version that you are upgrading to. The query below assumes OJS 3.3.0-17.
INSERT INTO versions VALUES ('3', '3', '0', '17', now(), '1', 'core', 'ojs2', '', '0', '1');
After the versions
table has been manually updated, you can delete the specific plugin that caused the error from the OJS plugins folder and then manually re-install the plugin as Journal Manager via the OJS Plugin Gallery. In addition, all other plugins marked as available for upgrade in the Plugin Gallery should be upgraded via the Plugin Gallery to the latest plugin version compatible with OJS 3.3.0.
- Alternatively, you can delete the specific plugin that caused the error from the OJS plugins folder, roll back your install to OJS 3.2.1 using your pre-upgrade backup, and re-run the upgrade to 3.3.0. Depending on how many plugins are causing upgrade errors, you may need to repeat this step multiple times. After the upgrade to OJS 3.3.0 has successfully completed, you will need to manually install all plugins that were deleted from the OJS plugins folder as Journal Manager via the OJS Plugin Gallery. In addition, all other plugins marked as available for upgrade in the Plugin Gallery should be upgraded to the latest version compatible with OJS 3.3.0.
Null Review Round IDs
- Problem: The upgrade from OJS 3.2.1 to OJS 3.3.0 fails due to null
review_round_ids
in the review_assignments
table.
- Solution: First, roll back your install to OJS 3.2.1 using your pre-upgrade backup. Once the database has been restored, run the following
UPDATE
query in MySQL to manually set review_round_id
in the review_assignments
table:UPDATE review_assignments, review_rounds SET review_assignments.review_round_id = review_rounds.review_round_id WHERE review_assignments.submission_id = review_rounds.submission_id AND review_assignments.round = review_rounds.round;
Following the above UPDATE
, you can check if there are any remaining null review_round_id
columns remaining via the following SELECT
query:
SELECT * FROM review_assignments WHERE review_round_id IS NULL;
If the above query returns one or more rows then you will need to inspect each row manually and determine whether the row corresponds to any valid submissions in your OJS install. If they do not, then the null rows can be deleted from the review_assignments
table.
TinyMCE
- Problem: Occasionally the TinyMCE plugin may not be installed or enabled after the upgrade. This leads to “API Key Missing” notification errors when viewing the OJS 3.x dashboard, as well as broken input and settings forms.
- Solution: In OJS 3.x, as Journal Manager enable the TinyMCE plugin via Settings > Website > Plugins.
Language Settings
- Problem: Occasionally a journal will not upgrade/migrate it’s installed language settings (UI settings, submission languages, metadata language settings). In OJS 3.x, this can be seen if you load the dashboard as Journal Manager or Editor — many tabs will be missing input and settings forms.
- Solution: In OJS 3.x, as Journal Manager enable all journal languages via Settings > Journal.
Database Character Encoding Issues
- Problem: The OJS database includes a mix of Latin1 and UTF8 tables or Latin1 tables with UTF8 data that result in display errors with accented characters on the journal homepage, article pages, or in search results.
- Solution: You will need to review your OJS database to identify the source of the error and correct your database to ensure that you have consistency across your character encoding, collation, and stored data. Please review the Character Encoding section in the PKP Docs Troubleshooting Guide.
MySQL Foreign Key Errors
- Problem: MySQL queries fail with foreign key errors.
- Solution: OJS 3.3.0 requires
InnoDB
database tables. If your MySQL database is using MyISAM
tables, you will need to convert these to InnoDB
before running the upgrade to OJS 3.3.0. Please see the “Convert MyISAM to InnoDB Tables” section for additional information.
MySQL Privilege Errors
- Problem: MySQL queries fail with reference permission errors.
- Solution: The OJS database user account will need the
REFERENCES
privilege granted in preparation for the upgrade from 3.2.1 to 3.3.0. Please see the “Grant REFERENCES Privilege” section for additional information.
Additional Resources
If you encounter problems that are not covered by this guide, you can find additional resolution suggestions via the PKP Forum, which are contributed by the global OJS user community and PKP staff. If your forum search does not produce any relevant results, please consider posting your question and error report.
+TRUNCATE submission_search_keyword_list;
+
Tentukan Mesin MySQL
+OJS 3.3.0 tidak dapat digunakan dengan mesin MySQL MyISAM
dan memerlukan tabel database InnoDB
. Untuk memeriksa apakah Anda perlu meng-konversi tabel MyISAM
yang ada ke InnoDB
, sambungkan ke database OJS Anda dan jalankan kueri berikut, ganti OJS_DBNAME
dengan nama database OJS Anda:
+SELECT DISTINCT Engine, COUNT(0) FROM information_schema.tables WHERE table_schema = 'OJS_DBNAME'
+Jika kolom Engine
dalam hasil kueri menyertakan MyISAM
maka Anda perlu meng-konversi tabel database MyISAM
ke InnoDB
menggunakan alur kerja yang dijelaskan di bagian "Convert MyISAM to InnoDB Tables" di bawah. Sebaliknya, jika kolom Engine
pada hasil kueri hanya menyertakan mesin InnoDB
maka tidak diperlukan konversi tabel dan Anda dapat langsung melanjutkan ke bagian "Grant REFERENCES Privilege".
Konversi Tabel MyISAM ke InnoDB
+Alur kerja ini hanya perlu diselesaikan jika Anda telah meng-konfirmasi bahwa Anda memiliki satu atau lebih tabel MyISAM
pada database OJS Anda. Untuk meng-konversi database OJS 2.x Anda dari tabel MyISAM
ke tabel InnoDB
, Anda perlu menyelesaikan langkah-langkah berikut:
+- Export database OJS ke dalam file teks, mis. melalui
mysqldump
+- Buka file teks dump database menggunakan text editor yang kompatibel dengan UTF8, misalnya vi, nano atau
vi
.
- Ganti semua
MyISAM
dengan definisi tabel InnoDB
pada dump database
+- Simpan text file dump database yang terbaru
+- Impor dump database yang terbaru ke database OJS yang baru
+Alur kerja berikut menjelaskan setiap langkah di atas secara lebih detail.
Pertama, Anda perlu membuat dump database untuk database OJS dan menyimpannya ke text file, misalnya ojs_database.sql
+Sekarang Anda dapat meng-konversi semua definisi tabel dalam file dump database menggunakan text editor. Misalnya, pada text editor vi
Anda dapat membuka dump database MySQL dan menjalankan perintah search-and-replace berikut. Tujuannya adalah untuk mengganti setiap definisi tabel MyISAM dengan mesin InnoDB
untuk semua tabel database MyISAM
. Anda akan diminta untuk me-review dan meng-konfirmasi setiap penggantian untuk setiap definisi tabel.
:%s/ENGINE=MyISAM/ENGINE=InnoDB/gc
+Langkah selanjutnya adalah menghapus database OJS Anda di MySQL karena masih berisi table definition MyISAM
yang lama. Kita kemudian akan membuat database OJS baru untuk menerima tabel definition InnoDB
yang diperbarui dan melakukan import file dump database yang dikonversi ke database OJS yang baru.
+Untuk menghapus database OJS yang ada dan membuat database OJS baru yang kosong, perintah MySQL berikut perlu dijalankan menggunakan akun pengguna MySQL dengan hak Istimewa (privilege) DROP
dan CREATE
, misalnya. baik pengguna OJS MySQL atau pengguna root MySQL.
Anda perlu mengganti nama database OJS_DBNAME
dan character set OJS_DBCHARSET
dengan yang sebenarnya, contoh kueri yang digunakan:
DROP DATABASE OJS_DBNAME;
+CREATE DATABASE OJS_DBNAME DEFAULT CHARSET 'OJS_DBCHARSET';
+Sekarang Anda memiliki database OJS baru yang kosong, Anda dapat meng-import data pada database OJS menggunakan file dump database MySQL yang diperbarui termasuk table definitions InnoDB
yang baru.
+Untuk perintah impor MySQL di bawah ini, Anda perlu mengganti pengaturan koneksi database OJS_DBNAME
dan OJS_DBUSER
, pengaturan character set OJS_DBCHARSET
, dan nama file dump database OJS_DBDUMPFILE
dengan nilai sebenarnya:
+mysql OJS_DBNAME -u OJS_DBUSER -p --default-character-set=OJS_DBCHARSET < OJS_DBDUMPFILE
Anda akan diminta password database untuk pengguna OJS MySQL seperti yang ditentukan dalam file OJS config.inc.php
pada line database Anda. Hal ini tergantung pada ukuran database OJS Anda, perintah import mungkin memerlukan waktu yang lama untuk selesai, misalnya. hingga 1 jam atau lebih untuk database yang sangat besar.
+
+Berikan REFERENCE Hak Istimewa (Privilege)
Pengguna database OJS akan memerlukan hak Istimewa (privilege) REFERENCES
yang diberikan melalui MySQL sebagai persiapan untuk upgrade ke OJS 3.3.0.
+Perintah MySQL di bawah ini perlu dijalankan dengan menggunakan akun pengguna MySQL dengan hak Istimewa (privilege) GRANT
, misalnya. akun pengguna root MySQL. Anda perlu mengganti OJS_DBNAME
, OJS_DBUSER
, dan OJS_DBPASSWD
dengan nilai untuk database OJS Anda seperti yang ditentukan di config.inc.php
:
GRANT REFERENCES ON OJS_DBNAME.* TO OJS_DBUSER@'localhost' IDENTIFIED BY 'OJS_DBPASSWD';
+Tahapan Persiapan
+Sebelum melanjutkan ke langkah upgrade yang pertama, hal-hal berikut harus diselesaikan terlebih dahulu:
- Backup segala komponen yang menjalankan OJS 2 antara lain web root OJS 2.x contoh folder files, folder public_html (public), dan database OJS MySQL
- Tentukan kumpulan karakter database OJS MySQL dan pengaturan susunannya
- Hapus data indeks pencarian dari database OJS MySQL
- Pastikan semua tabel menggunakan mesin InnoDB pada database OJS MySQL
- Berikan hak Istimewa (privilege) pada REFERENCE kepada pengguna database OJS MySQL
+Langkah Pertama: Masuk ke OJS 2.4.8-5
Jika instalasi Anda menjalankan versi yang lebih lama dari OJS 2.4.6 maka Anda harus melakukan upgrade terlebih dahulu ke OJS 2.4.6. Versi yang lebih lama dari OJS tersebut tidak memiliki kolom wajib pada tabel sessions
dan upgrade ke OJS 2.4.6 akan menambahkan kolom yang belum tersedia ini.
Jika instalasi Anda menjalankan OJS 2.4.6 atau versi yang lebih baru, Anda perlu melakukan upgrade ke OJS 2.4.8-5. Upgrade ini perlu dijalankan menggunakan versi lama PHP 7.x (PHP 8.x tidak akan berfungsi)
Skenario 1 versi yang direkomendasikan: OJS 3.2.1-5
Setelah instalasi Anda menjalankan OJS 2.4.8-5, Anda siap untuk beralih ke OJS 3.2.1-5.
Jika jurnal Anda menerbitkan gambar sampul artikel, pastikan Anda menerapkan patch ini pada instalasi OJS 3.2.1-5 Anda, jika Anda menerapkannya melalui the release tarball. Patch ini ditambahkan setelah OJS 3.2.1-5 dirilis dan memberikan perbaikan untuk bug upgrade OJS 2.x di dalam issue berkaitan dengan gambar sampul artikel.
Sebelum Anda memulai upgrade ke OJS 3.2.1-5, Anda perlu me-review file tambahan OJS 2.4.8-5 Anda.
File Tambahan: Submission Files atau Public Galleys?
Pastikan Kembali isi dari folder files, apakah terdapat file tambahan yang berisi file submission atau public galleys?
+Dalam persiapan untuk upgrade OJS 3.2.1-5, Anda perlu memutuskan bagaimana file tambahan (supplement files) harus dimigrasi dari OJS 2.4.8-5. Secara default, upgrade OJS 3.2.1-5 akan mengubah semua file tambahan menjadi artikel galleys yang dapat diakses oleh pembaca melalui landing page artikel.
+Hal ini tergantung bagaimana editor dan penulis menggunakan file tambahan di OJS 2.x, konversi ke artikel galleys ini mungkin tidak sesuai atau cocok untuk jurnal Anda. Misalnya, beberapa jurnal yang menjalankan OJS 2.x menggunakan file tambahan untuk menyimpan Letter of Agreement (LOA), copyright transfer form, dan lain-lain — dokumen-dokumen ini dianggap pribadi dan tidak diberikan untuk akses publik. Pada OJS 2.x, jika jurnal me-nonaktifkan fitur Reading Tools, maka link ke file tambahan akan dikeluarkan dari landing page artikel.
+Jika Anda ingin me-nonaktifkan konversi file tambahan ke public galleys selama proses upgrade ke OJS 3.2.1-5, dan sebagai gantinya meng-konversi file tambahan menjadi file private submission di OJS 3.2.1-5, maka Anda perlu apply a patch pada instalasi OJS tersebut sebelum memulai upgrade dari OJS 2.4.8-5.
+Setelah upgrade ke OJS 3.2.1-5 selesai, harap review contoh artikel yang termasuk file tambahan untuk memastikan bahwa file ini telah dimigrasi dengan benar dari OJS 2.4.8-5, untuk memastikan bahwa file tambahan bersifat publik terlihat sebagai artikel galleys atau dibatasi dari akses publik dan disimpan sebagai file private submission pada OJS 3.2.1-5.
+Langkah Terakhir: OJS 3.3.0
+Setelah Anda berhasil melakukan upgrade ke OJS 3.2.1-5 maka Anda dapat melakukan upgrade ke OJS 3.3.0 terbaru yang sudah termasuk long-term support dari PKP.
+Secara umum, upgrade dari OJS 3.2.1 ke OJS 3.3.0 akan selesai lebih cepat karena tidak ada update pada folder private files OJS dimana file submission dan file galley disimpan.
+Pembangunan Ulang Indeks Pencarian
Karena kita sudah menghapus data indeks pencarian OJS sebelum memulai alur kerja upgrade, sekarang kita perlu menjalankan kembali indeks pencarian melalui perintah PHP berikut, yang dijalankan di folder OJS sebagai peran root access:
php tools/rebuildSearchIndex.php
Mengatasi Masalah Umum
Error Versi Plugin
- Masalah: Langkah terakhir dalam upgrade,
addPluginVersions
, akan gagal jika ada plugin pada folder plugin OJS yang tidak sinkron dengan versi plugin di database. Jika versi plugin di folder plugins lebih lama dari versi plugin yang tercatat di database, kode skrip upgrade OJS akan menyampaikan notifikasi error "Cannot Downgrade Plugin".
- Solusi: Karena update versi plugin adalah langkah terakhir dalam proses kode skrip upgrade OJS, error di atas menunjukkan bahwa proses upgrade OJS telah selesai dengan pengecualian pada pemeriksaan versi plugin yang terbaru. Pada tahap ini Anda dapat melanjutkan dengan salah satu dari dua cara berikut:
- Perbarui tabel
versions
OJS secara manual dan sisipkan baris baru untuk versi OJS 3.3.0, pastikan Anda menandai versi OJS ini sebagai versi saat ini. Langkah Ini akan menyelesaikan upgrade ke OJS 3.3.0 secara manual.
Anda dapat melakukan hal ini dengan menjalankan dua kueri MySQL berikut:
UPDATE versions SET current = '0' WHERE product = ‘ojs2’;
Pada kueri MySQL di bawah ini, harap sesuaikan keempat parameter versi OJS agar sesuai dengan versi sebenarnya yang Anda upgrade. Kueri di bawah ini diasumsikan sebagai OJS 3.3.0-17.
INSERT INTO versions VALUES ('3', '3', '0', '17', now(), '1', 'core', 'ojs2', '', '0', '1');
Setelah tabel versions
di-update secara manual, Anda dapat menghapus plugin tertentu yang menyebabkan error dari folder plugin OJS dan kemudian meng-instal ulang plugin secara manual sebagai Journal Manager melalui Plugin Gallery OJS. Selain itu, semua plugin lain yang ditandai sebagai tersedia untuk di-upgrade pada Plugin Gallery, harus di-upgrade melalui Plugin Gallery ke versi plugin terbaru yang kompatibel dengan OJS 3.3.0.
- Alternatif lain, Anda dapat menghapus plugin khusus yang menyebabkan error dari folder OJS plugins, mengembalikan instalasi Anda ke OJS 3.2.1 (restore) dengan menggunakan backup pre-upgrade, dan lakukan kembali upgrade 3.3.0. Tergantung pada bagaimana plugins menyebabkan error pada proses upgrade, Anda mungkin harus mengulangi tahap ini beberapa kali. Setelah upgrade ke OJS 3.3.0 berhasil diselesaikan, Anda perlu meng-instal secara manual semua plugin yang dihapus dari folder plugin OJS sebagai Journal Manager melalui Plugin Gallery OJS. Selain itu, semua plugin lain yang ditandai sebagai plugin yang tersedia untuk di-upgrade di Plugin Gallery harus di-upgrade ke versi terbaru yang kompatibel dengan OJS 3.3.0.
Notifikasi Null Review Round ID
- Masalah: Upgrade dari OJS 3.2.1 ke OJS 3.3.0 gagal karena null
review_round_ids
pada tabel review_assignments
.
- Solusi: Pertama, kembalikan instalasi Anda ke OJS 3.2.1 dengan menggunakan backup pra-upgrade (restore) Anda. Setelah database di-restore, jalankan kueri
UPDATE
berikut di MySQL untuk mengatur review_round_id
secara manual pada tabel review_assignments
:UPDATE review_assignments, review_rounds SET review_assignments.review_round_id = review_rounds.review_round_id WHERE review_assignments.submission_id = review_rounds.submission_id AND review_assignments.round = review_rounds.round;
Dengan mengikuti UPDATE
di atas, Anda dapat memeriksa apakah masih ada kolom null review_round_id
yang tersisa melalui kueri SELECT
berikut:
SELECT * FROM review_assignments WHERE review_round_id IS NULL;
Jika kueri di atas mengembalikan satu baris atau lebih maka Anda perlu memeriksa setiap baris secara manual dan menentukan apakah baris tersebut sesuai dengan submission yang valid pada instalasi OJS Anda. Jika tidak, maka baris null dapat dihapus dari tabel review_assignments
.
TinyMCE
- Masalah: Kadang-kadang plugin TinyMCE tidak dapat di-instal atau diaktifkan setelah upgrade. Hal ini menyebabkan notifikasi error "API Key Missing" saat melihat dashboard OJS 3.x, serta formulir input dan setting tidak dapat digunakan.
- Solusi: Pada OJS 3.x, sebagai Journal Manager, aktifkan plugin TinyMCE melalui Settings > Website > Plugin.
Pengaturan Bahasa
- Masalah: Terkadang jurnal tidak dapat meng-upgrade/memindahkan pengaturan bahasa yang di-instalnya (pengaturan UI, bahasa submission, pengaturan bahasa metadata). Pada OJS 3.x, hal ini dapat dilihat jika Anda membuka dashboard sebagai Journal Manager atau Editor — banyak tab yang tidak memiliki formulir input dan setting.
- Solusi: Pada OJS 3.x, sebagai Journal Manager, aktifkan beberapa bahasa jurnal yang biasa dipakai misalnya English dan Indonesia melalui Settings > Journal > Language.
Masalah Pengkodean Karakter Database
- Masalah: Database OJS menyertakan campuran tabel Latin1 dan UTF8 atau tabel Latin1 dengan data UTF8 yang mengakibatkan error pada tampilan dengan karakter beraksen pada homepage jurnal, halaman artikel, atau pada hasil pencarian.
- Solusi: Anda perlu me-review database OJS Anda untuk mengidentifikasi sumber error dan memperbaiki database Anda untuk memastikan bahwa Anda memiliki konsistensi pada seluruh pengkodean karakter, collation, dan data yang disimpan. Review bagian Panduan Character Encoding section pada PKP Docs troubleshooting.
Error Foreign Key MySQL
- Masalah: Kueri MySQL gagal dengan error foreign key.
- Solusi: OJS 3.3.0 memerlukan tabel database
InnoDB
. Jika database MySQL Anda menggunakan tabel MyISAM
, Anda perlu meng-konversi tabel tersebut ke InnoDB
sebelum menjalankan upgrade ke OJS 3.3.0. Silakan lihat bagian "Convert MyISAM ke InnoDB Tables" untuk informasi tambahan.
Error Hak Istimewa (privilege) MySQL
- Masalah: Kueri MySQL gagal dengan error izin referensi (reference permission).
- Solusi: Akun pengguna database OJS memerlukan hak Istimewa (privilege)
REFERENCES
yang diberikan sebagai persiapan untuk upgrade dari 3.2.1 ke 3.3.0. Silakan lihat bagian "Grant REFERENCES Privilege" untuk informasi tambahan.
Sumber Informasi tambahan
Jika Anda menemukan permasalahan yang tidak tercakup dalam panduan ini, Anda dapat mencari jawaban dan mendapatkan saran untuk menyelesaikan masalah Anda melalui PKP Forum yang disampaikan oleh komunitas pengguna OJS global dan staf PKP. Jika Anda tidak mendapatkan hasil pencarian yang Anda inginkan, kirimkan pertanyaan dan laporkan permasalahan Anda ke forum tersebut.