에러 문구

too many values to unpack

원인

설정한 변수의 개수와 리턴해 주는 변수의 개수가 차이가 날때 발생

예를 들어 리턴 받는 값의 개수가 3개로 맞춰야 정상인 경우
aa, bb, cc = ss.run([a,b,c])

아래 경우는 오류 발생
bb, cc = ss.run([a,b,c])
> too many values to unpack

해결

리턴 받는 값의 개수를 맞춰주면 해결

 

참고 

https://wotres.tistory.com/entry/too-many-values-to-unpack-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%EB%B2%95

 

현상

높은 비중의 Thread State 상태가 유지되면서, CPU사용량이 높아지면서 성능 이슈가 발생

원인

Front-End 서버에서 MySQL에 만들어둔 SP 사용시 SP의 Body 호출이 필요함

MySQL.PROC에 해당 정보가 있지만 권한이 없어 INFORMATION_SCHEMA 정보를 가져가게 되면서 발생

해결 방안

db 접속 계정에 MySQL DB의 PROC 테이블에 SELECT 권한 부여

test_acc 계정에 권한 추가하는 경우

GRANT SELECT ON `mysql`.`proc` TO 'test_acc'@'%';

 

※현상

DB를 single_user에서 multi_user로 변경하는 도중 프로세스 Deadlock 발생

원인

DB 커넥션이 존재하는 상황에서, 사용자 세션이 master를 바라보는 도중 DB  커넥션을 모두 off시켜,

사용자 세션이 DB를 바라보지 않아 system 내부에서 DB의 소유자를 찾지 못하는 상태

deadlock이 발생하는 세션을 끊으려 하여도 사용자 세션이 아닌 시스템 세션이라 kill이 불가한 상태 

해결방안

1번으로 작업해야 하지만, 이미 deadlock이 발생한 상태라면 2번으로 해결

1. 작업하려는 DB를 소유하고 single_user로 변경

use [작업DB]
 
alter database [작업DB] set single_user WITH ROLLBACK IMMEDIATE-- immediate 커넥션 한번에 off
go
  
-- 작업 할 쿼리 내역
  
alter database [작업DB] set multi_user
go

2. Deadlock 발생 시, DB 재기동 후 아래 쿼리 실행

SET DEADLOCK_PRIORITY HIGH -- 교착상태 최상위 레벨로 격상
GO
 
ALTER DATABASE [작업DB] SET MULTI_USER WITH ROLLBACK IMMEDIATE -- 작업 DB multi_user로 변경
GO
  
-- https://myadventuresincoding.wordpress.com/2014/03/06/sql-server-alter-database-in-single-user-mode-to-multi-user-mode/

to Top