Description of issue or problem I’m having:
After upgrade to version OJS 3.3.0.8 (from 3.1.1.4) many references from the publication/citations page are missing. They exist in the database in the citations table but are not shown in the application page. This happens for some publications while others are displayed as expected. I am unsure of the relation between the citations or publications that have this issue.
Steps I took leading up to the issue:
Upgrade from version 3.1.1.4 to 3.3.0.8 which went successfully.
What I tried to resolve the issue:
I am unsure why this is happening. There are no errors in the php error log at /logs/.php.error.log. Some of the missing citations are written in English Alphabet letters only, I am guessing it is not encoding issue. I see that the column names in the citation table are changed between version from submission_id to publication_id, it might have caused the issue during upgrade?
Application Version - e.g., OJS 3.1.2:
OJS 3.1.1.4 upgrade 3.3.0.8
Additional information, such as screenshots and error log messages if applicable:
3.1.1.4 citations table:
3.3.0.8 citations table:
I ran parseCitations.php script, it finished with some deprication errors, but I think it went successfully. Here is the output:
PS D:\wamp64\www\ojs3\lib\pkp\tools> php .\parseCitations.php all
Deprecated: Return type of ADODB_Iterator_empty::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3149
Deprecated: Return type of ADODB_Iterator_empty::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3153
Deprecated: Return type of ADODB_Iterator_empty::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3145
Deprecated: Return type of ADODB_Iterator_empty::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3141
Deprecated: Return type of ADODB_Iterator_empty::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3139
Deprecated: Return type of ADORecordSet_empty::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3204
Deprecated: Return type of ADODB_Iterator::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3276
Deprecated: Return type of ADODB_Iterator::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3280
Deprecated: Return type of ADODB_Iterator::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3272
Deprecated: Return type of ADODB_Iterator::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3268
Deprecated: Return type of ADODB_Iterator::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3264
Deprecated: Return type of ADORecordSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in D:\wamp64\www\ojs3\stanovnistvo\lib\pkp\lib\vendor\adodb\adodb-php\adodb.inc.php on line 3356
This didn’t solve the issue however, I still have missing references. I am unsure if encoding is the issue, some of the citations use Serbian Cyrillic letters but most are in English Alphabet. Encoding of the database is utf8_unicode_ci and encoding of the citations table is utf8_general_ci. Since some of the citations are missing and some are displayed correctly, it could be some kind of encoding issue?
I am trying to change collation to utf8mb4 from utf8, I am getting error 1709 - Index column size too large. The maximum column size is 767 bytes. Trying to investigate that. Would mb4 collation be useful or am I wasting time debugging this right now?
Thank you! I will be waiting for the reply from your colleagues and continue to play with encoding settings. Please tell me if I need to share any more info.