Upgrade to OJS 3.0 from 2.4.8.0 - Error while converting supplementary files

Hi @Tarcisio_Pereira

Hmmm… the error says the line 1020, which is, like you said:

1018 $managerUserGroup = $userGroupDao->getDefaultByRoleId($journal->getId(), ROLE_ID_MANAGER);
1019 $managerUsers = $userGroupDao->getUsersById($managerUserGroup->getId(), $journal->getId());
1020 $creatorUserId = $managerUsers->next()->getId();
1021 }
1022 $article = $articleDao->getById($row[‘article_id’]);

Would it be possible for you to somehow debug and find/print out what are $managerUserGroup, $journal->getId() and $managerUsers there? It is in the function convertSupplementaryFiles, in classes/install/Upgrade.inc.php.

I wonder why is your last PostgreSQL query log the one searching for editors, probably from the function migrateUserRoles – because there are lots of other functions between the function migrateUserRoles and convertSupplementaryFiles, s. https://github.com/pkp/ojs/blob/ojs-3_0_2-0/dbscripts/xml/upgrade.xml#L84-L100.
My fault, I thought it has something to do with this error your are getting :-
That’s why I would like to fist stay on those lines where this error occurs and figure that out…

Maybe also to print out what is happening here: https://github.com/pkp/ojs/blob/ojs-3_0_2-0/classes/install/Upgrade.inc.php#L248-L254 – to be sure all old journal managers are assigned to the right group…

Thanks!
Bozana

Hi @bozana

Probably because of line 1019:[quote=“bozana, post:48, topic:25950”]
1019 $managerUsers = $userGroupDao->getUsersById($managerUserGroup->getId(), $journal->getId());
[/quote]

My debug code:

1013 while (!$suppFilesResult->EOF) {
1014 $row = $suppFilesResult->getRowAssoc(false);
1015 $suppFilesResult->MoveNext();
1016 if (!$journal || $journal->getId() != $row[‘context_id’]) {
1017 $journal = $journalDao->getById($row[‘context_id’]);
1018 $managerUserGroup = $userGroupDao->getDefaultByRoleId($journa l->getId(), ROLE_ID_MANAGER);
1019 $managerUsers = $userGroupDao->getUsersById($managerUserGroup ->getId(), $journal->getId());
1020 echo(‘journal_id=’.$journal->getId().’ managerUserGroup_id='.$managerUserGroup->getId().“\n”);
1021 if($journal->getId() == 218){
1022 var_dump($managerUserGroup);
1023 var_dump($managerUsers);
1024 }
1025 $creatorUserId = $managerUsers->next()->getId();
1026 }
1027 $article = $articleDao->getById($row[‘article_id’]);

And, my results (journal_id=218 only):

journal_id=218 managerUserGroup_id=157
object(UserGroup)#87561 (6) {
[“_data”]=>
array(10) {
[“id”]=>
string(3) “157”
[“roleId”]=>
string(2) “16”
[“contextId”]=>
string(3) “218”
[“isDefault”]=>
string(1) “1”
[“showTitle”]=>
string(1) “0”
[“permitSelfRegistration”]=>
string(1) “0”
[“abbrevLocaleKey”]=>
string(38) “default.groups.abbrev.productionEditor”
[“nameLocaleKey”]=>
string(36) “default.groups.name.productionEditor”
[“abbrev”]=>
array(9) {
[“de_DE”]=>
string(42) “##default.groups.abbrev.productionEditor##”
[“en_US”]=>
string(42) “##default.groups.abbrev.productionEditor##”
[“es_ES”]=>
string(42) “##default.groups.abbrev.productionEditor##”
[“fr_CA”]=>
string(42) “##default.groups.abbrev.productionEditor##”
[“fr_FR”]=>
string(42) “##default.groups.abbrev.productionEditor##”
[“it_IT”]=>
string(42) “##default.groups.abbrev.productionEditor##”
[“ja_JP”]=>
string(42) “##default.groups.abbrev.productionEditor##”
[“pt_BR”]=>
string(2) “EP”
[“ru_RU”]=>
string(42) “##default.groups.abbrev.productionEditor##”
}
[“name”]=>
array(9) {
[“de_DE”]=>
string(40) “##default.groups.name.productionEditor##”
[“en_US”]=>
string(40) “##default.groups.name.productionEditor##”
[“es_ES”]=>
string(40) “##default.groups.name.productionEditor##”
[“fr_CA”]=>
string(40) “##default.groups.name.productionEditor##”
[“fr_FR”]=>
string(40) “##default.groups.name.productionEditor##”
[“it_IT”]=>
string(40) “##default.groups.name.productionEditor##”
[“ja_JP”]=>
string(40) “##default.groups.name.productionEditor##”
[“pt_BR”]=>
string(20) “Editor de produção”
[“ru_RU”]=>
string(40) “##default.groups.name.productionEditor##”
}
}
[“_hasLoadableAdapters”]=>
bool(false)
[“_metadataExtractionAdapters”]=>
array(0) {
}
[“_extractionAdaptersLoaded”]=>
bool(false)
[“_metadataInjectionAdapters”]=>
array(0) {
}
[“_injectionAdaptersLoaded”]=>
bool(false)
}
object(DAOResultFactory)#88612 (10) {
[“dao”]=>
&object(UserDAO)#305 (1) {
[“_dataSource”]=>
object(ADODB_postgres7)#30 (94) {
[“databaseType”]=>
string(9) “postgres7”
[“hasLimit”]=>
bool(true)
[“ansiOuter”]=>
bool(true)
[“charSet”]=>
string(4) “UTF8”
[“metaColumnsSQL”]=>
string(970) “SELECT a.attname,
CASE
WHEN x.sequence_name != ‘’ THEN ‘SERIAL’
ELSE t.typname
END AS typname,
a.attlen,a.atttypmod,a.attnotnull,a.atthasdef,a.attnum
FROM pg_class c, pg_attribute a
JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN
(SELECT c.relname as sequence_name,
c1.relname as related_table,
a.attname as related_column
FROM pg_class c
JOIN pg_depend d ON d.objid = c.oid
LEFT JOIN pg_class c1 ON d.refobjid = c1.oid
LEFT JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum)
WHERE c.relkind = ‘S’ AND c1.relname = ‘%s’) x
ON x.related_column= a.attname
WHERE c.relkind in (‘r’,‘v’) AND
(c.relname=‘%s’ or c.relname = lower(‘%s’)) AND
a.attname not like ‘…%%’ AND
a.attnum > 0 AND
a.attrelid = c.oid
ORDER BY a.attnum”
[“metaColumnsSQL1”]=>
string(1056) "
SELECT a.attname,
CASE
WHEN x.sequence_name != ‘’ THEN ‘SERIAL’
ELSE t.typname
END AS typname,
a.attlen, a.atttypmod, a.attnotnull, a.atthasdef, a.attnum
FROM pg_class c, pg_namespace n, pg_attribute a
JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN
(SELECT c.relname as sequence_name,
c1.relname as related_table,
a.attname as related_column
FROM pg_class c
JOIN pg_depend d ON d.objid = c.oid
LEFT JOIN pg_class c1 ON d.refobjid = c1.oid
LEFT JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum)
WHERE c.relkind = ‘S’ AND c1.relname = ‘%s’) x
ON x.related_column= a.attname
WHERE c.relkind in (‘r’,‘v’) AND (c.relname=‘%s’ or c.relname = lower(‘%s’))
AND c.relnamespace=n.oid and n.nspname=‘%s’
AND a.attname not like ‘…%%’ AND a.attnum > 0
AND a.atttypid = t.oid AND a.attrelid = c.oid
ORDER BY a.attnum"
[“dataProvider”]=>
string(8) “postgres”
[“hasInsertID”]=>
bool(true)
[“_resultid”]=>
resource(10257562) of type (pgsql result)
[“concat_operator”]=>
string(2) “||”
[“metaDatabasesSQL”]=>
string(89) “select datname from pg_database where datname not in (‘template0’,‘template1’) order by 1”
[“metaTablesSQL”]=>
string(249) “select table_name,‘T’ from information_schema.tables where table_schema not in ( ‘pg_catalog’,‘information_schema’)
union
select table_name,‘V’ from information_schema.views where table_schema not in ( ‘pg_catalog’,‘information_schema’) "
[“isoDates”]=>
bool(true)
[“sysDate”]=>
string(12) “CURRENT_DATE”
[“sysTimeStamp”]=>
string(17) “CURRENT_TIMESTAMP”
[“blobEncodeType”]=>
string(1) “C”
[“metaKeySQL”]=>
string(484) “SELECT ic.relname AS index_name, a.attname AS column_name,i.indisunique AS unique_key, i.indisprimary AS primary_key
FROM pg_class bc, pg_class ic, pg_index i, pg_attribute a WHERE bc.oid = i.indrelid AND ic.oid = i.indexrelid AND (i.indkey[0] = a.attnum OR i.indkey[1] = a.attnum OR i.indkey[2] = a.attnum OR i.indkey[3] = a.attnum OR i.indkey[4] = a.attnum OR i.indkey[5] = a.attnum OR i.indkey[6] = a.attnum OR i.indkey[7] = a.attnum) AND a.attrelid = bc.oid AND bc.relname = ‘%s’”
[“hasAffectedRows”]=>
bool(true)
[“true”]=>
string(1) “1”
[“false”]=>
string(1) “0”
[“fmtDate”]=>
string(7) “‘Y-m-d’”
[“fmtTimeStamp”]=>
string(13) “‘Y-m-d H:i:s’”
[“hasMoveFirst”]=>
bool(true)
[“hasGenID”]=>
bool(true)
[”_genIDSQL"]=>
string(20) “SELECT NEXTVAL(‘%s’)”
[“_genSeqSQL”]=>
string(27) “CREATE SEQUENCE %s START %s”
[“_dropSeqSQL”]=>
string(16) “DROP SEQUENCE %s”
[“metaDefaultsSQL”]=>
string(125) “SELECT d.adnum as num, d.adsrc as def from pg_attrdef d, pg_class c where d.adrelid=c.oid and c.relname=‘%s’ order by d.adnum”
[“random”]=>
string(8) “random()”
[“autoRollback”]=>
bool(true)
[“uniqueIisR”]=>
bool(true)
[“_bindInputArray”]=>
bool(true)
[“disableBlobs”]=>
bool(false)
[“pnum"]=>
int(0)
[“database”]=>
string(4) “ojs3”
[“host”]=>
string(9) “localhost”
[“user”]=>
string(8) “revistas”
[“password”]=>
string(10) “not stored”
[“debug”]=>
bool(false)
[“maxblobsize”]=>
int(262144)
[“substr”]=>
string(6) “substr”
[“length”]=>
string(6) “length”
[“upperCase”]=>
string(5) “upper”
[“replaceQuote”]=>
string(2) “'”
[“nameQuote”]=>
string(1) “”"
[“uniqueOrderBy”]=>
bool(false)
[“emptyDate”]=>
string(6) " "
[“emptyTimeStamp”]=>
string(6) " "
[“lastInsID”]=>
bool(false)
[“hasTop”]=>
bool(false)
[“readOnly”]=>
bool(false)
[“hasTransactions”]=>
bool(true)
[“genID”]=>
int(0)
[“raiseErrorFn”]=>
bool(false)
[“cacheSecs”]=>
int(3600)
[“memCache”]=>
bool(false)
[“memCacheHost”]=>
NULL
[“memCachePort”]=>
int(11211)
[“memCacheCompress”]=>
bool(false)
[“sysUTimeStamp”]=>
bool(false)
[“arrayClass”]=>
string(18) “ADORecordSet_array”
[“noNullStrings”]=>
bool(false)
[“numQueries”]=>
int(8829359)
[“numCacheHits”]=>
int(0)
[“numCacheMisses”]=>
int(0)
[“pageExecuteCountRows”]=>
bool(true)
[“uniqueSort”]=>
bool(false)
[“leftOuter”]=>
bool(false)
[“rightOuter”]=>
bool(false)
[“poorAffectedRows”]=>
bool(false)
[“fnExecute”]=>
bool(false)
[“fnCacheExecute”]=>
bool(false)
[“rsPrefix”]=>
string(13) "ADORecordSet

[“autoCommit”]=>
bool(true)
[“transOff”]=>
int(0)
[“transCnt”]=>
int(0)
[“fetchMode”]=>
bool(false)
[“null2null”]=>
string(4) “null”
[“bulkBind”]=>
bool(false)
[“_oldRaiseFn”]=>
bool(false)
[“_transOK”]=>
NULL
[“_connectionID”]=>
resource(144) of type (pgsql link)
[“_errorMsg”]=>
string(0) “”
[“_errorCode”]=>
bool(false)
[“_queryID”]=>
resource(10257567) of type (Unknown)
[“_isPersistentConnection”]=>
bool(false)
[“_evalAll”]=>
bool(false)
[“_affected”]=>
bool(false)
[“_logsql”]=>
bool(false)
[“_transmode”]=>
string(0) “”
[“version”]=>
array(2) {
[“description”]=>
string(107) “PostgreSQL 9.4.7 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2), 64-bit”
[“version”]=>
string(5) “9.4.7”
}
[“pgVersion”]=>
float(9,4)
[“_nestedSQL”]=>
bool(true)
[“_metars”]=>
object(ADORecordSet_postgres7)#503 (30) {
[“databaseType”]=>
string(9) “postgres7”
[“_blobArr”]=>
NULL
[“canSeek”]=>
bool(true)
[“dataProvider”]=>
string(6) “native”
[“fields”]=>
bool(false)
[“blobSize”]=>
int(100)
[“sql”]=>
NULL
[“EOF”]=>
bool(false)
[“emptyTimeStamp”]=>
string(6) " "
[“emptyDate”]=>
string(6) " "
[“debug”]=>
bool(false)
[“timeCreated”]=>
int(0)
[“bind”]=>
bool(false)
[“fetchMode”]=>
int(3)
[“connection”]=>
RECURSION
[“_numOfRows”]=>
int(-1)
[“_numOfFields”]=>
int(-1)
[“_queryID”]=>
bool(false)
[“_currentRow”]=>
int(-1)
[“_closed”]=>
bool(false)
[“_inited”]=>
bool(false)
[“_obj”]=>
NULL
[“_names”]=>
NULL
[“_currentPage”]=>
int(-1)
[“_atFirstPage”]=>
bool(false)
[“_atLastPage”]=>
bool(false)
[“_lastPageNo”]=>
int(-1)
[“_maxRecordCount”]=>
int(0)
[“datetime”]=>
bool(false)
[“adodbFetchMode”]=>
int(0)
}
}
}
[“functionName”]=>
string(26) “_returnUserFromRowWithData”
[“idFields”]=>
array(0) {
}
[“records”]=>
NULL
[“wasEmpty”]=>
bool(true)
[“isFirst”]=>
bool(true)
[“isLast”]=>
bool(true)
[“page”]=>
int(1)
[“count”]=>
int(0)
[“pageCount”]=>
int(1)
}
PHP Fatal error: Call to a member function getId() on null in /var/www/html/ojs3/classes/install/Upgrade.inc.php on line 1025

I can send you a database dump and the full debug log if you wish.
I searched the code but can not find any place where the productionEditor migration is done.

Regards,
Tarcisio Pereira

Hmmm… @Tarcisio_Pereira, I think that our logic is not quite right in the upgrade script, but I will have to ask @asmecher: It seems that getDefaultByRoleId($journal->getId(), ROLE_ID_MANAGER) returns different groupId here https://github.com/pkp/ojs/blob/master/classes/install/Upgrade.inc.php#L253 and here https://github.com/pkp/ojs/blob/master/classes/install/Upgrade.inc.php#L1018. Because in this case the second time the groupId = 157 (production editor) is returned and we would actually like to get the ‘real’ journal manager :stuck_out_tongue: Thus, maybe we have to have something like “ORDER BY user_group_id” here https://github.com/pkp/pkp-lib/blob/master/classes/security/UserGroupDAO.inc.php#L249? Maybe also MySQL and PostgreSQL handle it differently in this case? Is there a more precise way to get the journal manager? I.e. I think we should get all userGroups with role_id = ROLE_ID_MANAGER (and not only one) and then go through till a user has been found? Would you agree @asmecher? Or, assign all userGroups with the role_id = ROLE_ID_MANAGER (journal manager, editor, production editor) to the old journal managers here: https://github.com/pkp/ojs/blob/master/classes/install/Upgrade.inc.php#L253-L254?

1 Like

Hi @bozana,

Ah, good spotting. In the case of the supplementary file migration, any user will do, so I’d suggest going through the user groups until a user is found. (This is already totally arbitrary, so no sense in getting fancy about how we find someone.)

Regards,
Alec Smecher
Public Knowledge Project Team

Hi @asmecher and @bozana

So… Must I wait for a patch or can do I something to help?

Regards,
Tarcisio Pereira.

@Tarcisio_Pereira

Could you maybe try to order by user_group_id in the function UserGropuDAO::getByRoleId, so the function would look like:
> $params = array((int) $contextId, (int) $roleId);

  if ($default) $params[] = 1; // true
  $result = $this->retrieveRange(
  	'SELECT	*
  	FROM	user_groups
  	WHERE	context_id = ? AND
  		role_id = ?
  		' . ($default?' AND is_default = ?':'')
  		.' ORDER BY user_group_id',
  	$params,
  	$dbResultRange
  );  

Maybe this will already solve your problem. In the mean time I would add a new loop that would go through all groups found and let you know…

Thanks!
Bozana

1 Like

Hi @bozana and @asmecher

I did it, and:

Successfully upgraded to version 3.0.2.0

I will wait for the final solution before upgrade my ‘real instalation’:

Thank you both!

Regards,
Tarcisio Pereira.

Hi @Tarcisio_Pereira

I have the same problem, what have you changed to resolve the problem? Did you apply changes suggested by @bozana :[quote=“bozana, post:53, topic:25950”]
if ($default) $params = 1; // true
$result = $this->retrieveRange(
‘SELECT *
FROM user_groups
WHERE context_id = ? AND
role_id = ?
’ . ($default?’ AND is_default = ?‘:’‘)
.’ ORDER BY user_group_id’,
$params,
$dbResultRange
);
[/quote]

@Tarcisio_Pereira, great!
@atarix, what exactly errors do you get?

That error.

I have already checked that every journal has more than one Journal Manager and deleted all article_supplementary_files with no real article_files, but still get the error.

@atarix

Do you also use PostgreSQL? Could you try with the change above – to add " order by user_group_id" to function UserGropuDAO::getByRoleId?

Thanks!
Bozana

1 Like

Yes I use postgres and I can try your changes.
I’ll post the result as soon as possible.

Thanks
Giuseppe

1 Like

Hi @atarix

I have made this:
ojs3/lib/pkp/classes/security/UserGroupDAO.inc.php

241 function getByRoleId($contextId, $roleId, $default = false, $dbResultRange = null) {
242 $params = array((int) $contextId, (int) $roleId);
243 if ($default) $params = 1; // true
244 $result = $this->retrieveRange(
245 ‘SELECT *
246 FROM user_groups
247 WHERE context_id = ? AND
248 role_id = ?
249 ’ . ($default?’ AND is_default = ?‘:’')
250 .’ ORDER BY user_group_id’,
251 $params,
252 $dbResultRange
253 );
254
255 return new DAOResultFactory($result, $this, ‘_returnFromRow’);
256 }

Regards,
Tarcisio Pereira.

@Tarcisio_Pereira thanks

@bozana I’ve applied changes and now the upgrade script finish Successfully, anyway It doesn’t seem to be all right.

I get several Warning message during script execution, like these:

PHP Warning:  Invalid argument supplied for foreach() in /path-to-ojs/classes/install/Upgrade.inc.php on line 1983
PHP Warning:  Cannot use a scalar value as an array in /path-to-ojs/lib/pkp/classes/core/DataObject.inc.php on line 133
PHP Warning:  Cannot use a scalar value as an array in /path-to-ojs/lib/pkp/classes/db/SettingsDAO.inc.php on line 41
PHP Warning:  Invalid argument supplied for foreach() in /path-to-ojs/classes/install/Upgrade.inc.php on line 2141

But the critical ones are these :

    PHP Warning:  rename(/path-to-ojs-files/journals/11//articles/2454//submission/original/2454-9209-1-SM.pdf,/path-to-ojs-files/journals/11//articles/2454//submission/2454-1-9209-1-2-20121019.pdf): Permission denied in /path-to-ojs/classes/install/Upgrade.inc.php on line 911
    Unable to move "/path-to-ojs-files/journals/11//articles/2454//submission/original/2454-9209-1-SM.pdf" to "/path-to-ojs-files/journals/11//articles/2454//submission/2454-1-9209-1-2-20121019.pdf".
    PHP Warning:  rename(/path-to-ojs-files/journals/11//articles/2454//submission/review/2454-9210-1-RV.pdf,/path-to-ojs-files/journals/11//articles/2454//submission/review/2454-1-9210-1-4-20121019.pdf): Permission denied in /path-to-ojs/classes/install/Upgrade.inc.php on line 911
    Unable to move "/path-to-ojs-files/journals/11//articles/2454//submission/review/2454-9210-1-RV.pdf" to "/path-to-ojs-files/test-ojs3-unimi/journals/11//articles/2454//submission/review/2454-1-9210-1-4-20121019.pdf".
    PHP Warning:  rename(/path-to-ojs-files/journals/11//articles/2454//submission/copyedit/2454-9211-1-CE.pdf,/path-to-ojs-files/journals/11//articles/2454//submission/copyedit/2454-1-9211-1-9-20121019.pdf): Permission denied in /path-to-ojs/classes/install/Upgrade.inc.php on line 911
    Unable to move "/path-to-ojs-files/journals/11//articles/2454//submission/copyedit/2454-9211-1-CE.pdf" to "/path-to-ojs-files/journals/11//articles/2454//submission/copyedit/2454-1-9211-1-9-20121019.pdf".
    PHP Warning:  mkdir(): Permission denied in /path-to-ojs/lib/pkp/classes/file/FileManager.inc.php on line 307
    Unable to make directory "/path-to-ojs-files/journals/11//articles/2454//submission/proof"
    PHP Warning:  rename(/path-to-ojs-files/journals/11//articles/2454//public/2454-9212-1-PB.pdf,/path-to-ojs-files/journals/11//articles/2454//submission/proof/2454-1-9212-1-10-20121019.pdf): No such file or directory in /path-to-ojs/classes/install/Upgrade.inc.php on line 911
    Unable to move "path-to-ojs-files/journals/11//articles/2454//public/2454-9212-1-PB.pdf" to "/path-to-ojs-files/journals/11//articles/2454//submission/proof/2454-1-9212-1-10-20121019.pdf".

It seems that there are too slashes in the file path.

Final result is that new installation doesn’t work properly, indeed when I try to view article page I get a white page.

Any suggestions?

Thanks
Giuseppe

Hi @atarix

The second messages mean that your files in the files folder could not be migrated to the right position – it seems that the access permissions are not right. Could you double check the permissions on your files folder – maybe allow everything for the moment you are upgrading – and try again, but do not forget to use your back-up i.e. original files folder (and not the one after an upgrade trial!).
For the first message: How does the code line 1983 and/or 2141 (the messages are pointing to) looks like in your installation? – I do not see that number here: ojs/Upgrade.inc.php at ojs-3_0_2-0 · pkp/ojs · GitHub :open_mouth:

Thanks!
Bozana

1 Like

Hi @bozana

Yes I’ll try again

This is the code :

		1982 $aboutJournal = array();
		1983 foreach ($supportedFormLocales as $locale) {
		1984	AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_GRID, $locale);
		1985	$aboutJournal[$locale] = '';

		2140 $masthead = array();
		2141 foreach ($supportedFormLocales as $locale) {
		2142	AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_USER, $locale);
		2143	$masthead[$locale] = '';

Many thanks!!

1 Like

Hi @atarix

Hmmmm… For some reason the $supportedFormLocales seem not to be an array :open_mouth: Could you take a look in your DB table journal_settings, where setting_name = ‘supportedFormLocales’? Is setting_value an array for all journals there?

Thanks!
Bozana

1 Like

I’ve tried to give all permissions during upgrade process and now files have been migrated successfully.

I’ve checked and I have 4 journals where supportedFormLocales is not setted, so i think I just need to correct this setting to solve the problem.

Thank you very much for support!!! :slight_smile:

1 Like

Could I delete all these entries in article_supplementary_files with no real article_files in my database too?
Are not they needed?

@Adriano_Jose, it would be best if you could double check if they are needed and repair them correctly, i.e. either upload the correct files again or delete them using the web user interface – in order for all dependencies to be managed correctly.
How many files are missing?
S. the function that deletes supp files in OJS 2.4.8-2: ojs/LayoutEditorAction.inc.php at ojs-2_4_8-2 · pkp/ojs · GitHub. I.e. you would need to consider at least also the DB tables article_files and article_supp_file_settings. Also the search index should then be rebuild.

Best,
Bozana