Morning Guys,
这是这个问题的后续内容。 mysqld.exe keeps crashing
我已经将崩溃范围缩小到单个存储过程,当执行此存储过程时,该过程似乎已经失效。
我已将其从原始状态拆分为三个存储过程。
主要程序spProductGroupMenu如下:
DELIMITER $$
USE `phclothing`$$
DROP PROCEDURE IF EXISTS `spProductGroupMenu`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spProductGroupMenu`(
spGrp VARCHAR(3),
spProductType ENUM('clothing','parts')
)
BEGIN
DECLARE qryType ENUM('group','manufacturer','nothing');
IF spProductType='clothing' THEN
SET qryType = (SELECT
(CASE WHEN
(SELECT
COUNT(DISTINCT(productGroup))
FROM
tblclothingitems
WHERE
productGroup=spGrp)>0
THEN 'group' ELSE
(CASE WHEN
(SELECT
COUNT(DISTINCT(productManufacturer))
FROM
tblclothingitems
WHERE
productManufacturer=spGrp)>0
THEN 'manufacturer' ELSE
'nothing' END) END));
ELSE
SET qryType = (SELECT
(CASE WHEN
(SELECT
COUNT(DISTINCT(productGroup))
FROM
tblpartsitems
WHERE
productGroup=spGrp)>0
THEN 'group' ELSE
(CASE WHEN
(SELECT
COUNT(DISTINCT(productManufacturer))
FROM
tblpartsitems
WHERE
productManufacturer=spGrp)>0
THEN 'manufacturer' ELSE
'nothing' END) END));
END IF;
IF qryType='manufacturer' THEN
CALL spPGMMans(spGrp,spProductType,qryType); ************
ELSEIF qryType='group' THEN
CALL spPGMGrp(spGrp,spProductType,qryType); ************
ELSE
-- This is not going to be used
SELECT
DISTINCT(productgroup) grpCode,
(CASE WHEN spProductType='clothing' THEN
CONCAT('/',grpSEO,'.html')
ELSE
CONCAT(spProductType,'/',grpSEO,'.html') END)seoLink,
pageH1 seoLinkTitle,
'allGroups' entryType,
qryType
FROM
tblclothingitems ci
LEFT JOIN
tblclothinggroups cg
ON
ci.productGroup = cg.grpcode
UNION ALL
SELECT
DISTINCT(productManufacturer) grpCode,
(CASE WHEN spProductType='clothing' THEN
cm.urlExt
ELSE
CONCAT(spProductType,'/',cm.urlExt) END)seoLink,
manTitle seoLinkTitle,
'allMans' entryType,
qryType
FROM
tblclothingitems ci
LEFT JOIN
tblclothingmanufacturers cm
ON
ci.productManufacturer = cm.manCode
ORDER BY entryType, seoLinkTitle ASC;
END IF;
END$$
DELIMITER;
这曾经包含一系列带有union所有语句的查询,具体取决于传入的内容,但这引发了关于mysql服务器崩溃的警报。所以************在哪里我将存储过程分成三个。这些存储过程中的每一个都在服务器上运行,但由于某种原因,当调用此存储过程时,服务器会崩溃并停止运行。
我一直在检查日志,这是运行此存储过程时与服务器的连接。
如果有人知道为什么会发生这种情况,或者有任何人遇到过这种情况,请告诉我。
非常感谢提前。
格雷厄姆
答案 0 :(得分:1)
好吧,这显然很奇怪。在预感之后,我点击了存储过程中每一行的末尾并删除了所有空白区域以防万一有任何错误的不可打印字符导致问题,低并且看起来它似乎已经解决了。
为了测试理论,我然后再次将存储过程反转回导致服务器崩溃的程度。我在服务器上运行它也很有用,这显然很奇怪。
毋庸置疑,我完全不知道为什么这个错误首先发生,但只能假定它是存储过程中一行末尾的非打印字符。
如果你看一看干杯! 格雷厄姆