nodejs.ER_DIVISION_BY_ZEROError: Division by 0问题解决

时间:2025-05-16 11:57:18

遇到这个问题是在nodejs环境,不过这个问题是mysql的问题。
mysql有个配置项:ERROR_FOR_DIVISION_BY_ZERO

如果有这个配置项,那么在执行updateinsert语句时,分母就不能为0,否则就会报除零异常。但是有个特例,就是如果分子为null,那么null / 0不会报错,因为mysql中有null的运算结果都是null

可以通过下面的语句查看自己的mysql是否添加了这个配置项:

select @@global.sql_mode;
// STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

如果有的话,可以将ERROR_FOR_DIVISION_BY_ZERO剔除,重新设置:

SET @@GLOBAL.sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

注意,这样设置,一旦重启mysql,配置就失效了。因此还需要修改,在mysqld下添加如下配置:

sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

这时可以不用重启mysql,因为已经用set @@global设置过了,等后面重启的时候也会起作用。