mysql - 自 MySQL 5.5 以来的 BIGINT 超出范围错误

标签 mysql nested-sets outofrangeexception

我正在为我的 CMS 使用嵌套集,但是从 MySQL 5.5 开始我无法移动节点。
抛出以下错误:

重新排序文档时出错:MySQL-DB 中的错误:无效的 SQL:

 SELECT baum2.id AS id,
 COUNT(*) AS level
 FROM elisabeth_tree AS baum1,
 elisabeth_tree AS baum2
 WHERE baum2.lft BETWEEN baum1.lft AND baum1.rgt
 GROUP BY baum2.lft
 ORDER BY ABS(baum2.id - 6);

错误:BIGINT UNSIGNED 值超出'(lektoren.baum2.id - 6)'
错误号:1690

有人解决过这个问题吗?我已经尝试类型转换一些零件,但没有成功。

最佳答案

BIGINT UNSIGNED 是无符号的,不能为负数。

如果 id 小于 6,您的表达式 ABS(lektoren.baum2.id - 6) 将使用负中间值。

大概早期版本隐式转换为 SIGNED。你需要做 Actor 。

尝试

ORDER BY ABS(CAST(lectoren.baum2.id AS SIGNED) - 6)

关于mysql - 自 MySQL 5.5 以来的 BIGINT 超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743069/

相关文章:

php - 查询列中的多个值

mysql - 了解用于查找每个类别嵌套集模型的项目计数的 SQL 查询

c# - 如何在C#中调试System.ArgumentOutOfRangeException错误?

c# - 渲染嵌套评论

mysql - 将邻接表模型和嵌套集模型结合起来是否被认为是糟糕的设计?

Delphi - 当表单的 ComponentCount 递减时如何中断

mysql - SQL:用连续值替换非连续值

c# - mysql的asp.net角色创建问题

包含所有可用成分的 MySQL 查询配方