お前らおはよう、
これはこの質問の続きです。 mysqld.exe がクラッシュし続けます。
クラッシュを 1 つのストアド プロシージャに絞り込みましたが、このストアド プロシージャが実行されたときに失敗したように見えます。
元の状態から 3 つのストアド プロシージャに分割しました。
メイン プロシージャ 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$$
区切り文字;
これは、渡されたものに応じてユニオンオールステートメントを使用した一連のクエリで構成されていましたが、これにより、mysql サーバーが落ちるという警告が発生しました。したがって、************ は、ストアド プロシージャを 3 つに分割した場所です。これらのストアド プロシージャはそれぞれサーバー上で独自に実行されますが、何らかの理由でこのストアド プロシージャが呼び出されると、サーバーが停止して実行を停止します。
全体を通してログをチェックしており、サーバーへの接続が確立されるのは、このストアド プロシージャが実行されたときです。
なぜこれが起こっているのか、またはこのような状況を経験したことがある人がいる場合は、私に知らせてください.
よろしくお願いします。
グラハム