php - MySQL 查询在 NaviCat 中有效,但在 SugarCRM 中无效

标签 php mysql sql-update sugarcrm navicat

如果需要任何其他信息来帮助您解决问题,请告诉我。

我正在运行 SugarCRM 6.5.20 CE

我有一个为自定义模块触发的逻辑 Hook ,当我检查日志时,查询显示执行时间并且似乎运行得很好,但数据库实际上并未更新。

我从 Sugarcrm.log 文件中取出了相同的查询,然后在 Navicat 中运行该查询,并且......它更新得很好,没有任何问题。

我已经尝试过了

  • 一些/无/所有列/表名称周围的反引号
  • 确保我没有使用任何保留字

所以此时我想将其归因于 MySQL 版本问题。我正在运行 MySQL 版本 5.5.49-cll。

UPDATE `my_database`.`p_policies_cstm`
LEFT OUTER JOIN r_raises_p_policies_1_c ON p_policies_cstm.id_c = r_raises_p_policies_1_c.r_raises_p_policies_1p_policies_idb
LEFT OUTER JOIN r_raises_cstm ON r_raises_cstm.id_c = r_raises_p_policies_1_c.r_raises_p_policies_1r_raises_ida
SET factor_c = '1.00', client_ppp_c = '1,529,987.76'
WHERE r_raises_p_policies_1_c.r_raises_p_policies_1p_policies_idb = 'e1570120-56e0-5d75-8ab7-574f2ef83a5b'

有人可以帮忙想想为什么它不会抛出错误但实际上不更新数据库吗?

这也是它触发的日志文件:

Wed Jun  1 20:30:06 2016 [26589][1][INFO] Query:UPDATE my_database.p_policies_cstm
            LEFT OUTER JOIN r_raises_p_policies_1_c ON p_policies_cstm.id_c = r_raises_p_policies_1_c.r_raises_p_policies_1p_policies_idb
            LEFT OUTER JOIN r_raises_cstm ON r_raises_cstm.id_c = r_raises_p_policies_1_c.r_raises_p_policies_1r_raises_ida
            SET factor_c = '1.00', client_ppp_c = '1,529,987.76'
            WHERE r_raises_p_policies_1_c.r_raises_p_policies_1p_policies_idb = 'e1570120-56e0-5d75-8ab7-574f2ef83a5b'
Wed Jun  1 20:30:06 2016 [26589][1][INFO] Query Execution Time:0.000363111495972
Wed Jun  1 20:30:06 2016 [26589][1][INFO] Get One: |SELECT id_c FROM p_policies_cstm WHERE id_c = 'e1570120-56e0-5d75-8ab7-574f2ef83a5b'|
Wed Jun  1 20:30:06 2016 [26589][1][DEBUG] Limit Query:SELECT id_c FROM p_policies_cstm WHERE id_c = 'e1570120-56e0-5d75-8ab7-574f2ef83a5b' Start: 0 count: 1
Wed Jun  1 20:30:06 2016 [26589][1][INFO] Query:SELECT id_c FROM p_policies_cstm WHERE id_c = 'e1570120-56e0-5d75-8ab7-574f2ef83a5b' LIMIT 0,1
Wed Jun  1 20:30:06 2016 [26589][1][INFO] Query Execution Time:0.000181913375854

最佳答案

我之前的答案似乎有效,但实际上不起作用。

真正的解决方案与使用 after_save 逻辑 Hook 有关,而不是使用 before_save 逻辑 Hook 。

我不知道的是,在 before_save 逻辑钩子(Hook)中,当您触发 SQL 查询时,它会返回并再次触发更新语句,但这次使用空白值,其中我试图更新值。

将其更改为 after_save 立即解决了问题。

关于php - MySQL 查询在 NaviCat 中有效,但在 SugarCRM 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594105/

相关文章:

php - 试图在 PHP 中获取用户 IP、引荐来源数据 - 为什么这段代码不起作用?

PHP 在相同的键和值上合并两个数组

MySQL查询嵌套选择问题

sql-server-2008 - 使用顺序整数更新表

mysql - 根据 2 个匹配字段返回是或否值

php - youtube-api 3.0 更新视频描述和/或标题

javascript - 如何从 Yiibooster 中的 TbSelect2 小部件检索 POST 数据?

php - 从输出的数字中减去%并显示新的数字

sql - 如何处理这个特定的查询

mysql - 正确建立我的数据库表