gpt4 book ai didi

我无法在更新查询中复制的 MySql 错误

转载 作者:行者123 更新时间:2023-11-29 02:15:40 25 4
gpt4 key购买 nike

有时,并非总是如此,我会收到以下错误:

1040 - Column 'avg_visit_duration' cannot be null

针对以下查询

UPDATE `visitors_stats` SET avg_visit_duration = if( avg_visit_duration =0, 41371, round( (
avg_visit_duration * ( visitors_number -1 ) +41371 ) / visitors_number, 2 )
),
max_visit_duration = if( 41371 > max_visit_duration, 41371, max_visit_duration ) ,
min_visit_duration = if( min_visit_duration =0, 41371, if( 41371 < min_visit_duration, 41371, min_visit_duration ) ) WHERE memberid = "74e57e4027c250edc9f1c4d38136d935" AND `date` = "2016-10-27"

问题是,如果我将此查询放入 phpmyadmin,它会返回 1 row affected0 row affected

我已经尝试过很多组合,包括一个空表、一个 future 日期和一个过去的日期。没有返回错误。

但每天当我检查我的程序日志时,我都会看到 3-4 个这样的错误,这并不多,因为每天执行大约 3-4k 个类似的查询。

这是表格:

CREATE TABLE IF NOT EXISTS `visitors_stats` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`memberid` varchar(32) NOT NULL,
`date` date NOT NULL,
`visitors_number` int(6) NOT NULL DEFAULT '0',
`avg_visit_duration` double NOT NULL DEFAULT '0',
`max_visit_duration` double NOT NULL DEFAULT '0',
`min_visit_duration` double NOT NULL DEFAULT '0'
PRIMARY KEY (`id`),
UNIQUE KEY `date` (`date`,`memberid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

可能是什么问题?

更新:许多人回答说问题可能来自

round((avg_visit_duration * ( visitors_number -1 ) +41371 ) / visitors_number, 2 )) 

但当 avg_visit_duration=0 时,visitors_number 始终为 0,由 if 条件固定

if( avg_visit_duration =0, 41371, round( ...

但是我强制表格模拟了 visitors_number=0 时的情况,我收到了不同的错误:

1365 - Division by 0

这与我最初的错误不同:

1040 - Column 'avg_visit_duration' cannot be null

最佳答案

您正在使用:

(avg_visit_duration*(visitors_number-1)+41371)/visitors_number

当 visitors_number=0 并且 avg_visit_duration 的值将不会被计算时,这将引发错误。

关于我无法在更新查询中复制的 MySql 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40284530/

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