shypie
10
2021-09-15 10:50:11
4
84

mysql alter 안되는 경우



안녕하세요 

중소기업에서 혼자 개발하고 있어

사수가 없다 보니  어디 물어볼 곳이 없어 질문 드립니다. 


현재 데이터가 들어있는 테이블에 'add column'을 하려고 합니다. 

그런데 지금까지 다른 테이블(같은 데이터베이스)은 잘되다가 유독 한 테이블만 안됩니다 ㅜ

데이터가 많은 것도 아니고 100개 미만으로 들어있고

'not null'로 넣는 것도 아닙니다. 

구문이 틀린 것도 아닙니다.

trigger, foreign key 없습니다.


오류는 다음과 같습니다. 

Operation failed: There was an error while applying the SQL script to the database.

ERROR 2013: Lost connection to MySQL server during query


오류가 위와 같길래

connection time을 늘렸는데도 같은 오류가 발생합니다. 


이 경우 무조건 connection time의 문제이기 때문에 시간을 더 늘려야 하나요? 

아니면 alter add 안되는 다른 이유라도 있을까요? 

0
  • 답변 4

  • 삼식이
    1k
    2021-09-15 11:10:28

    해당 테이블에 락이 걸린거 같네요

    어플이나 다른곳에 락을 건게 있는지 트랜잭션 체크 해보세요.

    락걸린게 맞다면 테이블락 거는 부분 수정이 필요해보이네요. 장시간 락 건거 자체가 문제임

  • shypie
    10
    2021-09-15 11:28:17 작성 2021-09-15 11:30:15 수정됨
     alter add 이후 동작이 하지 않길래 lock 확인하여 kill 주면 다시 쿼리 진행이 됩니다. 하지만 alter를 하면 다시 lock이 걸립니다. lock 걸린 것을 강제 종료 하는 거 외에 다른 방법이 있다는 얘기인가요? 테이블 락 거는 부분 수정이 필요하다고 하시는데 정확히 어떤 부분을 얘기하시는지 답변 가능하실까요? ㅜ
  • 삼식이
    1k
    2021-09-15 12:59:09

    lock 확인 할때 lock건 주체를 알아야 방안이 나올텐데요


    add column 시 nolock 주는 옵션으로 해보시거나

    https://myinfrabox.tistory.com/61


    mysql 버전문제로 안되고 lock건 주체도 모르겠다면

    건수가 얼마 안되니 컬럼추가된 동일한 임시테이블 하나 만들어서 데이터 복사후에 기존테이블 날린후 임시테이블 이름을 기존껄로 변경 하시면 될듯 하네요

  • shypie
    10
    2021-09-15 13:41:31
  • 로그인을 하시면 답변을 등록할 수 있습니다.