gpt4 book ai didi

WHERE 条件下的 MySql 存储过程错误

转载 作者:行者123 更新时间:2023-11-29 17:56:45 25 4
gpt4 key购买 nike

我正在尝试编写我的第一个 mySql 存储过程,但不断从服务器收到我无法理解的错误,希望有人能够帮助我修复它。

我在做什么我从社交网络收集一些参数,我需要将这些数据保存在两个不同的表中。我知道表架构可能不是最佳的,但这是我目前无法更改的。

这个想法是我从服务器端代码调用存储过程,传入文章 ID 和一些其他参数,以及过程:

  1. 更新“文章”表格
  2. 将新记录插入到“流行度”表中,其中一些值是先前更新的结果

这是我写的存储过程

BEGIN
UPDATE
articles2
SET
fb_shares = n_shares,
fb_comments = n_comments,
fb_reactions = n_reactions,
tw_tweets = @tweets :=(tw_tweets + n_tweets),
tw_retweets = @retweets :=(tw_retweets + n_retweets),
tw_favorites = @favorites :=(tw_favorites + n_favorites),
tw_reach = @reach :=(tw_reach + n_reach),
tw_since_id = n_since_id,
popularity = @popularity :=(
(n_shares * fb_shares_weight) +(
n_comments * fb_comments_weight
) +(
n_reactions * fb_reactions_weight
) +(@tweets * tw_tweets_weight) +(@retweets * tw_retweets_weight) +(
@favorites * tw_favorites_weight
) +(@reach * tw_reach_weight)
),
popularity_updated =(popularity_updated + 1)
WHERE
id = n_id ;
INSERT
INTO
popularity(
article_id,
added,
popularity,
tw_tweets,
tw_reach,
tw_favorites,
tw_retweets,
tw_since_id,
fb_shares,
fb_comments,
fb_reactions
)
VALUES(
n_id,
NOW(), @popularity, @tweets, @reach, @favorites, @retweets, n_since_id, n_shares, n_comments, n_reactions) ;
END

我不断收到错误#1416 - 无法从发送到 GEOMETRY 字段的数据中获取几何对象并且从未执行 INSERT。我认为变量分配是错误的,但不明白如何修复它。

如前所述,我以前从未编写过存储过程,并且由于该行对我来说看起来是正确的,所以我真的无法理解出了什么问题。我不能排除我正在尝试做一些不应该用存储过程完成的事情,但是我在网上找到的几个例子让我认为这应该是正确的......

预先感谢您,西蒙娜

编辑:

我消除了该错误,但仍然未执行 INSERT...这是更新的存储过程:

BEGIN
SET @tweets := 0, @retweets := 0, @favorites := 0, @reach := 0, @popularity := 0;
UPDATE
articles2
SET
fb_shares = n_shares,
fb_comments = n_comments,
fb_reactions = n_reactions,
tw_tweets = @tweets :=(tw_tweets + n_tweets),
tw_retweets = @retweets :=(tw_retweets + n_retweets),
tw_favorites = @favorites :=(tw_favorites + n_favorites),
tw_reach = @reach :=(tw_reach + n_reach),
tw_since_id = n_since_id,
popularity = @popularity :=(
(n_shares * fb_shares_weight) +(
n_comments * fb_comments_weight
) +(
n_reactions * fb_reactions_weight
) +(@tweets * tw_tweets_weight) +(@retweets * tw_retweets_weight) +(
@favorites * tw_favorites_weight
) +(@reach * tw_reach_weight)
),
popularity_updated =(popularity_updated + 1)
WHERE
id = n_id ;
SELECT @tweets, @retweets, @favorites, @reach, @popularity;
INSERT
INTO
popularity(
article_id,
added,
popularity,
tw_tweets,
tw_reach,
tw_favorites,
tw_retweets,
tw_since_id,
fb_shares,
fb_comments,
fb_reactions
)
VALUES(
n_id,
NOW(), @popularity, @tweets, @reach, @favorites, @retweets, n_since_id, n_shares, n_comments, n_reactions) ;
END

最佳答案

检查流行度表中使用数据类型GEOMETRY定义的字段的定义,并将其更改为适当的类型。

关于WHERE 条件下的 MySql 存储过程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48745535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com