현재 제가 사용하는 저장 프로시저 디버깅 프로세스는 매우 간단합니다. 저장 프로시저가 실행될 때 변수 값을 삽입하는
단순히 '다음' debug_msg 프로시저에서는 디버그 메시지를 콘솔입니다 출력입니다 부를 수 있다.
DELIMITER $$
DROP PROCEDURE IF EXISTS `debug_msg`$$
DROP PROCEDURE IF EXISTS `test_procedure`$$
CREATE PROCEDURE debug_msg(enabled INTEGER, msg VARCHAR(255))
BEGIN
IF enabled THEN
select concat('** ', msg) AS '** DEBUG:';
END IF;
END $$
CREATE PROCEDURE test_procedure(arg1 INTEGER, arg2 INTEGER)
BEGIN
SET @enabled = TRUE;
call debug_msg(@enabled, 'my first debug message');
call debug_msg(@enabled, (select concat_ws('','arg1:', arg1)));
call debug_msg(TRUE, 'This message always shows up');
call debug_msg(FALSE, 'This message will never show up');
END $$
DELIMITER ;
테스트 실행하십시오 다음과 같습니다.
CALL test_procedure(1,2)
다음 출력입니다 발생할 것으로 보인다.
** DEBUG:
** my first debug message
** DEBUG:
** arg1:1
** DEBUG:
** This message always shows up
저도 여러분과 비슷한 일을 하고 있습니다.
저는 보통 기본값이 false인 DEBUG 매개변수를 포함하고 런타임에 true로 설정할 수 있습니다. 그런 다음 디버그 문을
또한 프로세스와 타이밍을 검토할 수 있도록 많은 작업에서 로깅 테이블을 사용합니다. 제 디버그 코드도 여기에 출력됩니다. 호출 매개변수 이름, 간단한 설명, 영향을 받은 행 수(적절한 경우), 주석 필드 및 타임스탬프가 포함됩니다.
좋은 디버깅 도구는 모든 SQL 플랫폼의 슬픈 결함 중 하나입니다.
케이블링의 man 디버거:
Int '와' 로그 'id 열 두 개의 테이블을 만드는 호출됨 로그터블 VARCHAR (255)'.
Id 열 수 있도록 오토의 클레먼트.
이 절차에 따라:
구분 // 드롭합니다 log_msg 프로시저에서는 '' // Log_msg 프로시저에서는 만들기 '' (msg VARCHAR (255)) 시작한다. 0, msg 로그터블 삽입하십시오 선택합니다. END
매입옵션 log_msg (concat (& # 39, 마이바르 입니다. & # 39, & # 39 마이바르;; 및 myvar2 입니다. & # 39, myvar2));
Mysql 용 디버거 좋은분이었나요 그것의 자유로운 것은 아니다. 이것이 내가 현재 사용.
DELIMITER GO$
DROP PROCEDURE IF EXISTS resetLog
GO$
Create Procedure resetLog()
BEGIN
create table if not exists log (ts timestamp default current_timestamp, msg varchar(2048)) engine = myisam;
truncate table log;
END;
GO$
DROP PROCEDURE IF EXISTS doLog
GO$
Create Procedure doLog(in logMsg nvarchar(2048))
BEGIN
insert into log (msg) values(logMsg);
END;
GO$
저장 프로시저 사용.
call dolog(concat_ws(': ','@simple_term_taxonomy_id', @simple_term_taxonomy_id));
저장 프로시저를 사용할 수 있습니다.
call resetLog ();
call stored_proc();
select * from log;
여기 제시된 다른 방법은
http://gilfster.blogspot.co.at/2006/03/debugging-stored-procedures-in-mysql.html
사용자 정의 디버그입니다 mySql 절차 및 로깅하기 함께 표.
그냥 간단한 선택할 경우 볼 수도 있습니다 배치하십시오 코드에서 처형되었다.
SELECT 'Message Text' AS `Title`;
내가 맡을게 아이디어를
http://forums.mysql.com/read.php # msg 78225 99,78155,78225?
누군가를 위한 맞춤형 템플릿을 만든 디버그로 깃허브 절차를 볼 수 있다.
여기 보고
http://www.bluegecko.net/mysql/debugging-stored-procedures/ https://github.com/CaptTofu/Stored-procedure-debugging-routines
여기서 말하는 것은
하지만, 더 늦게 i& # 39 m 당 재생하느뇨 맥주.
http://ocelot.ca/blog/blog/2015/03/02/the-ocelotgui-debugger/ 및 https://github.com/ocelot-inc/ocelotgui
중단점, 지원 및 변수 감사라고요 꽤 안정적인 전화했는데 보인다.
How it works. It 통합되므로 너회의 mysql 클라이언트 (I& 14.04 unbuntu 사용하여 # 39, m), 후 실행:
$install
$setup yourFunctionName
이 새로운 데이터베이스 서버 설치 시 디버깅하지 제어하는 과정이다. 그래서:
$debug yourFunctionName('yourParameter')
step by step 걸을 수 있는 기회를 부여하느뇨 코드에 및 " refreshing"; 이게 어떻게 된 일입니까, 코드 내에 변수를 더 잘 파악할 수 있습니다.
이건 대체 insert" "; 및 " log"; 방법. 여전히 " 코드에서 무료로 debug"; 명령어.
스크린샷.
MySQL 은 커넥터뿐 / 네트워크없음 6.6 피쳐입니다 디버그입니다 저장됩니까 절차 및 총괄하였습니다
, 설치 > 디버거
>. 저장 프로시저를 사용할 수 있도록 디버거: >. >. - 예를 커넥터뿐 / 네트워크없음 6.6: 6.6 옵션을 선택하고 커넥터뿐 / Net 설치 완료. >. - 예를 커넥터뿐 / 네트워크없음 6.7 이상: Visual Studio 를 제품을 설치하고 MySQL 의 저장 프로시저 디버거 속한다. >. >. 시작 디버거 >. >. 시작하기 위해 디버거, 다음 단계에 따라: >. >. - Visual Studio 의 서버 탐색기를 연결을 선택합니다. >. - 확장하십시오 저장 프로시저 폴더에서는. 저장 프로시저 직접 디렉토리에만 디버깅할 수 있습니다. 사용자 정의 함수 디버그로 저장됩니까 만듭니다 >. 프로시저입니다 함수를 호출한다. >. - 선택 후 마우스 오른쪽 단추로 클릭하면 나타나는 메뉴에서 및 저장 프로시저 노드입니다 디버그입니다 눈길을 끌고 있다.
MySql 커넥터뿐 / NET 에 통합 버전 6.6, visual studio 디버거 등이 vmware. 저장 프로시저 설치 및 소스 같습니다 구할 수 있습니다. http://dev.mysql.com/downloads/connector/net/
일부 문서 / 스크린샷: https://dev.mysql.com/doc/visual-studio/en/visual-studio-debugger.html
여기에 공지의 따를 수 있습니다. http://forums.mysql.com/read.php # msg 561817 38,561817,561817?
업데이트: Visual Studio 용 mysql 에서 별도의 제품을 선택할 수 있습니다 / NET 에 신설되었다 커넥터스탠드높이 등의 디버거) 이 여기에서 https://dev.mysql.com/downloads/windows/visualstudio/1.2.html (아직 무료 &. open source).
부인: 난 이 개발자는 MySQL 용 엔진 (visual studio 디버거 작성한 저장 프로시저를 위한 제품.
내가 가진 두 개의 서로 다른 도구를 사용하여 디버그로 절차 및 기능:
[이] [1] 에서 해당하는 오토메이티드 @Brad 파크스 Mysql 은 버전 대해 확신하지 못하고 있지만, 5.6, 조금 업그레이드됨 내거냐 면변형을 작업:
내가 만든 '함수' debug_msg 원하는거요 함수은 되돌려줍니다 아닌 절차) 및 텍스트 (문자가 없는 제한값) 한 후 security. '선택', '역할을 debug_msg' (params) 를 아래와 같이 코드를 my_res_set.
CREATE DEFINER=`root`@`localhost` FUNCTION `debug_msg`(`enabled` INT(11), `msg` TEXT) RETURNS text CHARSET latin1
READS SQL DATA
BEGIN
IF enabled=1 THEN
return concat('** DEBUG:', "** ", msg);
END IF;
END
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_func_call`(
IN RegionID VARCHAR(20),
IN RepCurrency INT(11),
IN MGID INT(11),
IN VNC VARCHAR(255)
)
BEGIN
SET @enabled = TRUE;
SET @mainQuery = "SELECT * FROM Users u";
SELECT `debug_msg`(@enabled, @mainQuery) AS `debug_msg1`;
SET @lastQuery = CONCAT(@mainQuery, " WHERE u.age>30);
SELECT `debug_msg`(@enabled, @lastQuery) AS `debug_msg2`;
END $$
DELIMITER
[1]: https://stackoverflow.com/questions/273437/how-do-you-debug-mysql-stored-procedures # 15687954
MySQL 사용자 정의 가변으로 로깅하기 출력입니다 사용할 수 있게 했다.
"' 구분;; 만드시겠습니까 프로시저에서는 Foo (타바레나미 VARCHAR (128)) 시작한다. 설정되었습니다 @stmt = CONCAT (& # 39, & # 39 에서 일부 * 타바레나미;). 포스트마트 예습이요 충스러웠으니 @stmt. Autoexec. 포스트마트. 할당 예습이요 포스트마트. 후 주석을 정리할 디버깅하지 -