저는 몇 시간 동안 문제에 봉착했습니다. 새로운 물리적 테이블에 INSERT가 많은 MYSQL에서 저장 프로 시저를 만들고 있습니다. 다음은 MySQL 서버에서 실행할 수없는 예제입니다. 저장된 시저를 호출하면MySQL INSERT 쿼리가 저장 프로 시저에서 작동하지 않습니다.
DROP PROCEDURE IF EXISTS `someProc`$$
CREATE DEFINER=`test`@`%` PROCEDURE `someProc`()
BEGIN
DROP TABLE IF EXISTS table1;
SET @SQL1 = ' CREATE TABLE `table1` (`last_updated` INT);
INSERT INTO `table1` (`last_updated`)
VALUES (1); ';
-- select @SQL1;
PREPARE stmt2 FROM @SQL1;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;
END$$
DELIMITER ;
, 나는 오류가 주위 'INSERT INTO
표 (
이 )
을 LAST_UPDATED 존재한다는 MySQL의 오류 코드 1064를 얻을.
그러나 유효한 SQL 쿼리로 @ SQL1 변수에 할당 된 문자열 내용을 실행할 수 있으며 만든 테이블뿐만 아니라 값을 삽입 할 수 있습니다. 나는 오류 코드에 대한 봤어 블로그 및 문서 페이지에서 제안 된 것처럼 여기에 예약 된 키워드를 사용하고 생각하지 않는다 또는 호환되지 않는 데이터 형식을 삽입 해요. 스토어드 프로 시저 설정 외부에서 작동하지만 프로 시저 내부에서 비참하게 실패하는 것은 단순한 SQL입니다. 누구든지 약간의 빛을 비추 수 있습니까?
먼저'('.) 전에 괄호 앞에 공백을 넣을 수 있습니다. –
방금 시도했지만 오류는 그대로 유지됩니다. – rstarter