[OJS-3.4.0-3] Code: 23000 Message: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry

OJS-3.4.0-3
PHP-8.1

We have upgraded from OJS-3.3.0-14 to OJS-3.4.0-3 for testing purposes.

I have tried submitting with an Admin login. But if we tried with User login it got submitted normally.

While submitting the article, when we clicked on the final submit button, the screen got stuck and the circle was continuously rotating. When we refreshed the page and checked the submission it finally got submitted.

I have checked the error logs and found some fatal error which is mentioned below.

[04-Oct-2023 10:49:58 UTC] Slim Application Error:
Type: Illuminate\Database\QueryException
Code: 23000
Message: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '141548-19-1' for key 'stage_assignments.stage_assignment' (SQL: INSERT INTO stage_assignments
					(submission_id, user_group_id, user_id, date_assigned, recommend_only, can_change_metadata)
				VALUES
					(141548, 19, 1, '2023-10-04 10:49:58', 0, 1))
File: /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php
Line: 760
Trace: #0 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(720): Illuminate\Database\Connection->runQueryCallback()
#1 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(577): Illuminate\Database\Connection->run()
#2 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(469): Illuminate\Database\Connection->affectingStatement()
#3 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(338): Illuminate\Database\DatabaseManager->__call()
#4 /ojs34/lib/pkp/classes/db/DAO.php(170): Illuminate\Support\Facades\Facade::__callStatic()
#5 /ojs34/lib/pkp/classes/stageAssignment/StageAssignmentDAO.php(299): PKP\db\DAO->update()
#6 /ojs34/lib/pkp/classes/stageAssignment/StageAssignmentDAO.php(241): PKP\stageAssignment\StageAssignmentDAO->insertObject()
#7 /ojs34/lib/pkp/classes/context/SubEditorsDAO.php(222): PKP\stageAssignment\StageAssignmentDAO->build()
#8 /ojs34/lib/pkp/classes/observers/listeners/AssignEditors.php(50): PKP\context\SubEditorsDAO->assignEditors()
#9 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(441): PKP\observers\listeners\AssignEditors->handle()
#10 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(249): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}()
#11 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(451): Illuminate\Events\Dispatcher->dispatch()
#12 /ojs34/lib/pkp/classes/submission/Repository.php(595): event()
#13 /ojs34/lib/pkp/api/v1/submissions/PKPSubmissionHandler.php(717): PKP\submission\Repository->submit()
#14 [internal function]: PKP\API\v1\submissions\PKPSubmissionHandler->submit()
#15 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func()
#16 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke()
#17 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke()
#18 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack()
#19 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/App.php(503): Slim\Route->run()
#20 /ojs34/lib/pkp/classes/security/authorization/internal/ApiAuthorizationMiddleware.php(90): Slim\App->__invoke()
#21 [internal function]: PKP\security\authorization\internal\ApiAuthorizationMiddleware->__invoke()
#22 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#23 [internal function]: Slim\DeferredCallable->__invoke()
#24 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#25 /ojs34/lib/pkp/classes/security/authorization/internal/ApiCsrfMiddleware.php(56): Slim\App->Slim\{closure}()
#26 [internal function]: PKP\security\authorization\internal\ApiCsrfMiddleware->__invoke()
#27 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#28 [internal function]: Slim\DeferredCallable->__invoke()
#29 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#30 /ojs34/lib/pkp/classes/security/authorization/internal/ApiTokenDecodingMiddleware.php(140): Slim\App->Slim\{closure}()
#31 [internal function]: PKP\security\authorization\internal\ApiTokenDecodingMiddleware->__invoke()
#32 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#33 [internal function]: Slim\DeferredCallable->__invoke()
#34 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#35 /ojs34/lib/pkp/classes/handler/APIHandler.php(83): Slim\App->Slim\{closure}()
#36 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#37 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#38 [internal function]: Slim\DeferredCallable->__invoke()
#39 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#40 /ojs34/lib/pkp/classes/handler/APIHandler.php(100): Slim\App->Slim\{closure}()
#41 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#42 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#43 [internal function]: Slim\DeferredCallable->__invoke()
#44 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#45 /ojs34/lib/pkp/classes/handler/APIHandler.php(105): Slim\App->Slim\{closure}()
#46 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#47 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#48 [internal function]: Slim\DeferredCallable->__invoke()
#49 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#50 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}()
#51 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack()
#52 /ojs34/lib/pkp/classes/handler/APIHandler.php(98): Slim\App->process()
#53 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#54 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#55 [internal function]: Slim\DeferredCallable->__invoke()
#56 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#57 /ojs34/lib/pkp/classes/handler/APIHandler.php(105): Slim\App->Slim\{closure}()
#58 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#59 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#60 [internal function]: Slim\DeferredCallable->__invoke()
#61 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#62 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}()
#63 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack()
#64 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/App.php(297): Slim\App->process()
#65 /ojs34/lib/pkp/classes/core/APIRouter.php(110): Slim\App->run()
#66 /ojs34/lib/pkp/classes/core/Dispatcher.php(165): PKP\core\APIRouter->route()
#67 /ojs34/lib/pkp/classes/core/PKPApplication.php(387): PKP\core\Dispatcher->dispatch()
#68 /ojs34/index.php(21): PKP\core\PKPApplication->execute()
#69 {main}
Previous error:
Type: PDOException
Code: 23000
Message: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '141548-19-1' for key 'stage_assignments.stage_assignment'
File: /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php
Line: 570
Trace: #0 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(570): PDOStatement->execute()
#1 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(753): Illuminate\Database\Connection->Illuminate\Database\{closure}()
#2 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(720): Illuminate\Database\Connection->runQueryCallback()
#3 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(577): Illuminate\Database\Connection->run()
#4 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(469): Illuminate\Database\Connection->affectingStatement()
#5 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(338): Illuminate\Database\DatabaseManager->__call()
#6 /ojs34/lib/pkp/classes/db/DAO.php(170): Illuminate\Support\Facades\Facade::__callStatic()
#7 /ojs34/lib/pkp/classes/stageAssignment/StageAssignmentDAO.php(299): PKP\db\DAO->update()
#8 /ojs34/lib/pkp/classes/stageAssignment/StageAssignmentDAO.php(241): PKP\stageAssignment\StageAssignmentDAO->insertObject()
#9 /ojs34/lib/pkp/classes/context/SubEditorsDAO.php(222): PKP\stageAssignment\StageAssignmentDAO->build()
#10 /ojs34/lib/pkp/classes/observers/listeners/AssignEditors.php(50): PKP\context\SubEditorsDAO->assignEditors()
#11 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(441): PKP\observers\listeners\AssignEditors->handle()
#12 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(249): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}()
#13 /ojs34/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(451): Illuminate\Events\Dispatcher->dispatch()
#14 /ojs34/lib/pkp/classes/submission/Repository.php(595): event()
#15 /ojs34/lib/pkp/api/v1/submissions/PKPSubmissionHandler.php(717): PKP\submission\Repository->submit()
#16 [internal function]: PKP\API\v1\submissions\PKPSubmissionHandler->submit()
#17 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func()
#18 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke()
#19 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke()
#20 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack()
#21 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/App.php(503): Slim\Route->run()
#22 /ojs34/lib/pkp/classes/security/authorization/internal/ApiAuthorizationMiddleware.php(90): Slim\App->__invoke()
#23 [internal function]: PKP\security\authorization\internal\ApiAuthorizationMiddleware->__invoke()
#24 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#25 [internal function]: Slim\DeferredCallable->__invoke()
#26 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#27 /ojs34/lib/pkp/classes/security/authorization/internal/ApiCsrfMiddleware.php(56): Slim\App->Slim\{closure}()
#28 [internal function]: PKP\security\authorization\internal\ApiCsrfMiddleware->__invoke()
#29 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#30 [internal function]: Slim\DeferredCallable->__invoke()
#31 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#32 /ojs34/lib/pkp/classes/security/authorization/internal/ApiTokenDecodingMiddleware.php(140): Slim\App->Slim\{closure}()
#33 [internal function]: PKP\security\authorization\internal\ApiTokenDecodingMiddleware->__invoke()
#34 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#35 [internal function]: Slim\DeferredCallable->__invoke()
#36 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#37 /ojs34/lib/pkp/classes/handler/APIHandler.php(83): Slim\App->Slim\{closure}()
#38 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#39 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#40 [internal function]: Slim\DeferredCallable->__invoke()
#41 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#42 /ojs34/lib/pkp/classes/handler/APIHandler.php(100): Slim\App->Slim\{closure}()
#43 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#44 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#45 [internal function]: Slim\DeferredCallable->__invoke()
#46 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#47 /ojs34/lib/pkp/classes/handler/APIHandler.php(105): Slim\App->Slim\{closure}()
#48 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#49 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#50 [internal function]: Slim\DeferredCallable->__invoke()
#51 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#52 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}()
#53 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack()
#54 /ojs34/lib/pkp/classes/handler/APIHandler.php(98): Slim\App->process()
#55 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#56 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#57 [internal function]: Slim\DeferredCallable->__invoke()
#58 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#59 /ojs34/lib/pkp/classes/handler/APIHandler.php(105): Slim\App->Slim\{closure}()
#60 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()
#61 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()
#62 [internal function]: Slim\DeferredCallable->__invoke()
#63 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()
#64 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}()
#65 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack()
#66 /ojs34/lib/pkp/lib/vendor/slim/slim/Slim/App.php(297): Slim\App->process()
#67 /ojs34/lib/pkp/classes/core/APIRouter.php(110): Slim\App->run()
#68 /ojs34/lib/pkp/classes/core/Dispatcher.php(165): PKP\core\APIRouter->route()
#69 /ojs34/lib/pkp/classes/core/PKPApplication.php(387): PKP\core\Dispatcher->dispatch()
#70 /ojs34/index.php(21): PKP\core\PKPApplication->execute()
#71 {main}
View in rendered output by enabling the "displayErrorDetails" setting.

I am having same issue. But its not happening on all journals. I have one OJS instance with multiple journals on it. In one journal there is no error, in other there is error

 'PHP message: Slim Application Error:\nType: Illuminate\\Database\\QueryException\nCode: 23000\nMessage: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '4414-427-1' for key 'stage_assignment' (SQL: INSERT INTO stage_assignments\n\t\t\t\t\t(submission_id, user_group_id, user_id, date_assigned, recommend_only, can_change_metadata)\n\t\t\t\tVALUES\n\t\t\t\t\t(4414, 427, 1, '2024-02-28 16:57:19', 0, 1))\n

FYI, I just encountered this error and it was tied to user role permissions. The journal was using section editors to auto assign submissions, but the section editor role had all of its permissions turned off. Turning them back on fixed the issue.