반응형
동일한 MySQL 서버의 다른 데이터베이스에있는 두 테이블간에 auto_increment 필드를 동기화해야합니다. 희망은 관리자의 권한으로 웹 사용자가 권한을 부여하지 않고 ALTER TABLE [db1]. [table] AUTO_INCREMENT = [num];
을 실행할 수있는 저장 프로 시저를 만드는 것이 었습니다. SQL 주입).
내 문제는 저장 절차를 만들 때 오류가 발생한다는 것입니다. 이것이 MySQL에서 허용하지 않는 것입니까?
<코드>
DROP PROCEDURE IF EXISTS sync_auto_increment;
CREATE PROCEDURE set_auto_increment (tableName VARCHAR(64), inc INT)
BEGIN
ALTER TABLE tableName AUTO_INCREMENT = inc;
END;
해결 방법
문제는 구분 기호를 변경해야한다는 것입니다. Alter table
줄이 함수의 끝이라고 생각합니다. 이 시도:
DROP PROCEDURE IF EXISTS sync_auto_increment;
DELIMITER //
CREATE PROCEDURE set_auto_increment (tableName VARCHAR(64), inc INT)
BEGIN
ALTER TABLE tableName AUTO_INCREMENT = inc;
END//
DELIMITER ;
때로는 mysql이 저장 프로 시저를 사용하도록 허용하는 것이 까다롭기 때문에 여전히 실행할 수없는 경우 시도해 볼 수 있습니다.
DROP PROCEDURE IF EXISTS sync_auto_increment;
DELIMITER //
CREATE PROCEDURE set_auto_increment (tableName VARCHAR(64), inc INT)
DETERMINISTIC
READS SQL DATA
BEGIN
ALTER TABLE tableName AUTO_INCREMENT = inc;
END//
DELIMITER ;
참조 페이지 https://stackoverflow.com/questions/2520310
반응형
'MySql' 카테고리의 다른 글
MySQL 구문 분석 오류 : 구문 오류, 예기치 않은 'INTO'(T_STRING) 7 행 (0) | 2020.12.02 |
---|---|
MySQL MAMP Pro에서 Apache가 시작되지 않음 (0) | 2020.12.02 |
MySQL 어레이에 데이터베이스 결과 추가 (0) | 2020.12.02 |
MySQL 행이 있는지 확인하십시오, Laravel (0) | 2020.12.02 |
MySQL 64 비트 시스템에서 ODBC를 통해 mysql에 연결 (0) | 2020.12.02 |
댓글