[Help]: JOB Laravel, problema com SQL Server
Estou tendo problema com uma job onde esta no Laravel Nigthwatch esta acusando um erro:
Unhandled 42000 Laravel 11.45.1 PHP 8.3.23 Illuminate\Database\QueryException SQLSTATE[42000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]New transaction is not allowed because there are other threads running in the session.
Porém quando eu roda a job em ambiente local não acontece nenhum erro, esse é minha JOB:
try {
$this->getUserIdBlackboardByCourse($this->freeCourse->id);
$grades = $this->getGradeColumnsByCourse("CURSOLIVRE-".$this->freeCourse->id);
$gradeId = null;
/**
* Busca o id da coluna de notas da prova final de integração
*/
foreach ($grades as $grade) {
if ($grade['name'] == $this->freeCourse->prova_final_integracao)
$gradeId = $grade['id'];
}
// prova que define a nota do aluno
if ($gradeId) {
$studentsGrades = $this->getCourseGrades("CURSOLIVRE-".$this->freeCourse->id, $gradeId);
//atualiza os alunos com base na nota que veio do blackboard
foreach ($studentsGrades as $studentGrade) {
$studentGrade['score'] = $studentGrade['score'] ?? -1;
if($studentGrade['score'] == -1 && !$this->closeCourse) continue;
$student = StudentFreeCourses::with('lyAluno')->whereHas('lyAlunoFL', function ($query) use ($studentGrade) {
$query->where('FL_FIELD_15', $studentGrade['userId']);
})
->where('curso_livre_id', $this->freeCourse->id)
->where('status', '<>', StudentFreeCourses::STATUS_APROVADO)
->first();
// Se o student NÃO existir, significa que não integrado com o blackboard. Em tese, sempre deve passar aqui
if ($student && ($studentGrade['score'] != -1)) {
$student->nota_final = $studentGrade['score'];
$student->status = $studentGrade['score'] >= $this->freeCourse->nota_minima_aprovacao ? StudentFreeCourses::STATUS_APROVADO : StudentFreeCourses::STATUS_REPROVADO;
$student->save();
// Cria o certificado, envia para a clouddocs e envia email para o aluno.
if ($student->status == StudentFreeCourses::STATUS_APROVADO) {
ProcessFreeCourseCertificateClouddocs::dispatch($student);
if($this->freeCourse->atividade_complementar){
// Dispara a job para inserir os alunos na atividade complementar
ProcessInsertFreeCourseComplementaryActivity::dispatch($this->freeCourse, $student);
}
}
}
}
if ($this->closeCourse) {
// Os alunos do curso que ficaram sem nota na prova, são reprovados aqui
StudentFreeCourses::where('curso_livre_id', $this->freeCourse->id)
->where('status', StudentFreeCourses::STATUS_MATRICULADO)
->update([
'status' => StudentFreeCourses::STATUS_REPROVADO
]);
$this->freeCourse->status = FreeCourse::STATUS_COMPLETED;
$this->freeCourse->save();
}
}
Log::info('Sucesso');
} catch (\Exception $e) {
Log::info('erro' . $e->getMessage());
if($this->closeCourse){
$this->freeCourse->status = FreeCourse::STATUS_ERROR;
$this->freeCourse->save();
}
throw $e;
}