所以,我收到一个关于未定义函数的错误。每当我尝试使用我的计数器变量来引用表中的特定条目时,就会发生这种情况。我不明白。
为了更清楚,我被告知为了使用mysql循环,我必须制作一个我已经完成的“程序”。 count和ingredientcount变量是对表tDrinks和tUniqueingredients中正在检查的行的引用。
我正在尝试从表tDrinkMix中的tDrinks生成drink id的外键引用。我想要在饮料中为每种独特成分的实例输入饮料ID。有16.5k饮料和2.2k独特的成分。
现在它死于SELECT id(count)FROM tDrinks。如果我删除了(计数)那么它就会在WHERE d_shopping(count)上死掉。
抛出的错误是#1305,它表示没有定义函数DrinksDB.id
DROP PROCEDURE `test`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
DECLARE count INT DEFAULT 0;
DECLARE ingredientcount INT DEFAULT 0;
WHILE count < 16532 DO
WHILE ingredientcount < 2202 DO
INSERT INTO tDrinkMix(count)
SELECT id(count) FROM tDrinks
WHERE d_shopping(count)
LIKE CONCAT('%',tUniqueingredients.ingredient(ingredientcount),'%');
SET ingredientcount = ingredientcount + 1;
END WHILE;
SET count = count + 1;
END WHILE;
END
所以我正在努力改进这一点,我仍然不在那里。你怎么能说这是我的第一个数据库项目?我认为以下情况越来越近了:程序至少会保存并看起来可能会执行
delimiter //
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
DECLARE count INT DEFAULT 0;
DECLARE ingredientcount INT DEFAULT 0;
WHILE count < 16532 DO
WHILE ingredientcount < 2202 DO
INSERT INTO tDrinkMix(drink_id)
SELECT id
FROM tDrinks
WHERE id = count
and
d_shopping
LIKE
(SELECT CONCAT (ingredient,'%') FROM tUniqueingredients WHERE id = ingredientcount);
SET ingredientcount = ingredientcount + 1;
END WHILE;
SET count = count + 1;
END WHILE;
END//
答案 0 :(得分:0)
我相信错误正在发生,因为解析器将id(count)解释为函数。它正在你的数据库中寻找一个函数,我猜是DrinksDB。当您从id中删除(count)时,它会移动到d_shopping(count)的下一个语法错误,并在数据库中查找名为d_shopping的函数。 我很感激我迟到了(我只是在扫描未解决的问题)所以它可能不再是一个问题了。如果发表评论仍然存在问题。