@jnugent thank you for your help and suggestion to use the search index rebuild tool. After TRUNCATE’ing the three submission_search_* tables and running php tools/rebuildSearchIndex.php I realized the rebuild tool crashes after running into the issue of a duplicate entry key violation. I tried this multiple times but the issue persists.
PHP Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘covid’ for key ‘submission_search_keyword_text’
My first thought was this could be related to my post-mojibake cleanup. Your post Resolving charset encoding mix-ups / mojibake - #6 by jnugent was my last lead. My submission_search_* is utf8_general_ci but the majority of the other tables including submission_* and *_settings are latin1_swedish_ci. I changed the relevant ones you described to utf8_general_ci but the problem persists.
My second thought, since our editors are stuck publishing the issue (500 server error on generating submission keywords), was to unschedule the publication in question with the covid keyword. After that, the publication process completed successfully (no error generating submission keywords).
I’m slightly unconvinced that the specific COVID submission is the problem, but would like your thoughts. Is it more likely to be the mojibake remnants and collation incompatibilities, or a specific metadata field that might be wrecking that single COVID submission?
PS. Running the index rebuild with the article unpublished still runs into the fatal error. Here’s the full stack trace output from the command line.
PHP Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘covid’ for key ‘submission_search_keyword_text’ in lib/pkp/lib/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:115
Stack trace:
#0 lib/pkp/lib/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php(115): PDOStatement->execute()
#1 lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(489): Doctrine\DBAL\Driver\PDOStatement->execute()
#2 lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(664): Illuminate\Database\Connection->Illuminate\Database{closure}()
#3 lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(631): Illuminate\Database\Connection->runQueryCallback()
#4 lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(496): Illuminate\Database\Connection->run()
#5 lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 671