【发布时间】:2017-08-31 05:15:35
【问题描述】:
在运行一个相当普通的操作时,我的应用程序崩溃并显示错误消息:
[error] [exception.RedBean_Exception_SQL] [22003] - SQLSTATE[22003]: Numeric value out of range: 1690 BIGINT UNSIGNED value is out of range in '(`zurmo`.`account_read`.`count` - 1)'
这个错误让我感到困惑,因为它类似于来自this question 的错误消息,但是对于一个 MUCH 较小的值/字符数。更令人困惑的是,我知道数据库中有更大的常规 int 值。
现在,我可以更详细地了解 application,但这似乎不是应用程序甚至数据库接口 (redbean) 的问题,即使它们都被标记在这里。
更多信息,这里是堆栈跟踪:
REQUEST_URI=/app/index.php/zurmo/role/details?id=4
HTTP_REFERER=https://************/app/index.php/zurmo/role/details?id=4
---
2017/08/30 07:27:57 [warning] [application] Exception class: RedBean_Exception_SQL
#0 /var/www/html/redbean/rb.php(777): RedBean_Driver_PDO->runQuery('update account_...', Array)
#1 /var/www/html/redbean/rb.php(1779): RedBean_Driver_PDO->Execute('update account_...', Array)
#2 /var/www/html/redbean/rb.php(7534): RedBean_Adapter_DBAdapter->exec('update account_...', Array)
#3 /var/www/html/redbean/rb.php(7440): RedBean_Facade::query('exec', 'update account_...', Array)
#4 /var/www/html/app/protected/modules/zurmo/utils/ReadPermissionsOptimizationUtil.php(962): RedBean_Facade::exec('update account_...')
#5 /var/www/html/app/protected/modules/zurmo/utils/ReadPermissionsOptimizationUtil.php(1022): ReadPermissionsOptimizationUtil::decrementCount('account_read', 19716, Object(Role))
#6 /var/www/html/app/protected/modules/zurmo/utils/ReadPermissionsOptimizationUtil.php(1053): ReadPermissionsOptimizationUtil::decrementParentRolesCounts('account_read', 19716, Object(Role))
#7 /var/www/html/app/protected/modules/zurmo/utils/ReadPermissionsOptimizationUtil.php(668): ReadPermissionsOptimizationUtil::bulkDecrementParentRolesCounts('account_read', Array, Object(Role))
#8 /var/www/html/app/protected/modules/zurmo/utils/ReadPermissionsOptimizationUtil.php(604): ReadPermissionsOptimizationUtil::roleParentSetOrRemoved(false, Object(Role))
#9 /var/www/html/app/protected/modules/zurmo/utils/AllPermissionsOptimizationUtil.php(357): ReadPermissionsOptimizationUtil::roleParentBeingRemoved(Object(Role))
#10 /var/www/html/app/protected/modules/zurmo/models/Role.php(181): AllPermissionsOptimizationUtil::roleParentBeingRemoved(Object(Role))
#11 /var/www/html/app/protected/core/models/RedBeanModel.php(1909): Role->beforeSave()
#12 /var/www/html/app/protected/modules/zurmo/models/Item.php(123): RedBeanModel->save(false, NULL)
#13 /var/www/html/app/protected/modules/zurmo/utils/ZurmoControllerUtil.php(162): Item->save(false)
#14 /var/www/html/app/protected/modules/zurmo/utils/ZurmoControllerUtil.php(109): ZurmoControllerUtil->saveModelFromSanitizedData(Array, Object(Role), false, 'Philippines Des...', false)
#15 /var/www/html/app/protected/modules/zurmo/components/ZurmoBaseController.php(738): ZurmoControllerUtil->saveModelFromPost(Array, Object(Role), false, 'Philippines Des...', false)
#16 /var/www/html/app/protected/modules/zurmo/controllers/RoleController.php(99): ZurmoBaseController->attemptToSaveModelFromPost(Object(Role))
#17 /var/www/html/app/protected/modules/zurmo/controllers/RoleController.php(74): ZurmoRoleController->actionEdit('4')
#18 [internal function]: ZurmoRoleController->actionDetails('4')
#19 /var/www/html/yii/framework/web/actions/CAction.php(109): ReflectionMethod->invokeArgs(Object(ZurmoRoleController), Array)
#20 /var/www/html/yii/framework/web/actions/CInlineAction.php(47): CAction->runWithParamsInternal(Object(ZurmoRoleController), Object(ReflectionMethod), Array)
#21 /var/www/html/yii/framework/web/CController.php(308): CInlineAction->runWithParams(Array)
#22 /var/www/html/yii/framework/web/filters/CFilterChain.php(133): CController->runAction(Object(CInlineAction))
#23 /var/www/html/yii/framework/web/filters/CFilter.php(40): CFilterChain->run()
#24 /var/www/html/yii/framework/web/filters/CFilterChain.php(130): CFilter->filter(Object(CFilterChain))
#25 /var/www/html/yii/framework/web/CController.php(291): CFilterChain->run()
#26 /var/www/html/yii/framework/web/CController.php(265): CController->runActionWithFilters(Object(CInlineAction), Array)
#27 /var/www/html/yii/framework/web/CWebApplication.php(286): CController->run('details')
#28 /var/www/html/yii/framework/web/CWebApplication.php(141): CWebApplication->runController('zurmo/role/deta...')
#29 /var/www/html/yii/framework/base/CApplication.php(185): CWebApplication->processRequest()
#30 /var/www/html/app/protected/core/components/WebApplication.php(88): CApplication->run()
#31 /var/www/html/app/index.php(75): WebApplication->run()
#32 {main}
可以做些什么来解决这个问题?感觉跟数据库的配置有点关系,但是不知道看什么。
【问题讨论】:
-
它是 SIGNED-UNSIGNED 公式值类型的结果吗?如果是这种情况,并且您没有在 sql 查询中显式类型转换操作数,Mysql 可能会出错。尝试使用日志文件中的值打印查询以进一步分析。
-
@Whome 您需要查询本身吗?或其他信息集?
-
我不需要查询,这只是一个提示,也许您应该运行一个额外的调试来查明提交的确切 sql 查询和参数值类型(PreparedStatement、Statement、typed params、A+B+ C列算术?)
-
请记住,对于 Unsigned BigInt,-1 超出范围。 PHP 程序在出错时返回 -1 是常见的做法,因此您的程序很可能试图将错误代码保存为记录键。