[MySQL] ERROR 1457 (HY000): Failed to load routine after upgrade or migratrion
에러메세지
ERROR 1457 (HY000): Failed to load routine DB_NAME.MY_PROCEDURE_01. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
상황
mysql 업그레이드 및 마이그레이션 작업 이후
데이터상태
proc 테이블에는 MY_PROCEDURE_01 이 제대로 들어가 있음
use mysql; select * from proc where name='MY_PROCEDURE_01';
의 결과는 제대로 나옴…
호출시
call DB_NAME.MY_PROCEDURE_01;
show create procedure DB_NAME.MY_PROCEDURE_01;
등을 수행하게 되면..
위의 에러메세지가 발생한다는것…
원인
- 테이블 손상
- 데이터 마이그레이션 실패
등 여러가지가 있겠으나..
나같은 경우는…
구버전 -> 최신(mysql-5.7) 업데이트를 하다보니..
프로시저 선언시
CREATE TEMPORARY TABLE TMPTTT(REGDATE varchar(10))TYPE = HEAP
이런식으로 현재 버전에서 지원하지 않는 구문오류로 인해 해당 프로시저가 정상적으로 생성되지 않았던 것.
찾느라 무척 애먹음.. ;;;;;
mysql upgrade : https://dev.mysql.com/doc/refman/5.7/en/upgrading.html#upgrade-procedure-logical