| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- html
- maria db
- Eclipse
- 정보처리기사
- spring
- IntelliJ
- mysql
- js
- SQL
- urlshortner
- my sql
- shorturl
- windows
- davinciresolve
- Tomcat
- node.js
- reCAPTCHA
- Java
- programmers
- SQL Server
- jquery
- svn
- Linux
- Mac
- TIP
- javascript
- dbeaver
- Oracle
- devlog
- mybatis
Archives
- Today
- Total
고양의 성장일기
[DBeaver] 프로시저 생성 DDL 실행 중 SQL Error [1064] [42000] 해결방법 본문
🛠️ Development Tools/DBeaver
[DBeaver] 프로시저 생성 DDL 실행 중 SQL Error [1064] [42000] 해결방법
고 양 2026. 1. 26. 19:00반응형
프로시저 생성 DDL 실행 중 SQL Error [1064] [42000] 해결방법
Error occurred during SQL script execution
Reason:
SQL Error [1064] [42000]: (conn=56) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 5

원인 및 해결방법
이 예외는 MySQL이나 MariaDB에서 표시되는 흔한 구문 오류입니다.
SQL 문법이 정확하지 않거나, 예약어가 충돌하는 경우 발생합니다.
저의 경우는 DDL을 수동으로 마이그레이션 하는 중 이 문제가 발생했습니다.
아무래도 DBeaver와 같은 SQL 클라이언트가 기본 구분자 규칙에 따라 문장을 분할 처리하면서,
함수 본문이 구분되는 바람에 하나의 CREATE FUNCTION문으로 전달되지 못한 것으로 보입니다.
그 결과 서버에서 온전하지 않은 SQL문으로 인식하여 구문 오류를 반환하게 됩니다.
이럴 때 전체 SQL문의 구분자(Delimiter)를 아래와 같이 바꿔서 한 번 감싸주면 대체로 해결됩니다.
DELIMITER $$
CREATE FUNCTION FN_NAME(value VARCHAR(12))
RETURNS VARCHAR(12)
BEGIN
...
END$$
DELIMITER ;
또한 SQL문을 실행할 때 Execute statement(한 문장 실행)이 아니라, Execute SQL Script(스크립트 실행)로 실행해야 합니다.

재발 방지를 위해 체크해야 할 사항들
아래는 Function / Procedure / Trigger 마이그레이션 시 이와 같은 문제가 재발하지 않도록 DDL 실행 전 체크해야 할 사항들입니다.
1. 실행 방식
- Execute statement(문장 실행)으로 실행하지 않도록 주의합니다.
- Execute SQL Script(스크립트 실행)으로 실행하는 것이 안전합니다.
- 여러 줄의 SQL을 블록지정하여 부분 실행 하지는 않았는지 확인합니다.
2. DELIMITER(구분자) 설정
- CREATE DDL 실행 전 DELIMITER를 변경하면 좋습니다.
- END 뒤에 변경한 DELIMITER를 정확히 사용해줍니다.
- 구문 가장 마지막줄에 DELIMITER ;로 구분자를 원복해줍니다.
DELIMITER $$
-- DDL
END$$
DELIMITER ;
마치며
이 외에도 여러가지 원인이 존재할 수 있으며 같은 에러코드라도 상황에 따라 해결방법이 다를 수 있다는게 킹받는 포인트입니다.
부디 이 포스팅이 누군가에게 도움이 될 수 있기를 바랍니다.
감사합니다.
반응형
'🛠️ Development Tools > DBeaver' 카테고리의 다른 글
| [DBeaver] 여러 개의 INSERT 문 한번에 실행하기 (0) | 2023.09.07 |
|---|---|
| [DBeaver] SQL Server 1433 포트에 TCP/IP 연결 (0) | 2023.09.07 |
| [DBeaver] DBeaver와 SQL Server 연동하기 (0) | 2023.09.07 |
| [DBeaver] MySQL "Public Key Retrieval is not allowed." (0) | 2023.09.07 |
| [DBeaver] DBeaver와 MySQL 연동하기 (0) | 2023.09.07 |