【发布时间】:2013-07-17 22:19:11
【问题描述】:
所以我尝试使用 TreeBehavior 的恢复方法,因为我认为我的一些数据已损坏。尝试执行此操作时,我收到此 SQL 错误:
错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“AND”附近使用正确的语法
SQL 查询:UPDATE fracmerl_dev.categories AS Category SET Category.lft = Category.lft + 4203 其中Category.lft BETWEEN AND
显然查询缺少一些值。我也收到此警告:
注意 (8):未定义偏移量:0 [CORE/Cake/Model/Behavior/TreeBehavior.php,第 865 行]
这是 Cake 2.3 版。
编辑:
TreeBehavior 中的第 865 行是这段代码的最后一行:
list($node) = array_values($Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $Model->id),
'fields' => array($Model->primaryKey, $parent, $left, $right),
'recursive' => $recursive
))); //THIS IS LINE 865
所以我假设array_values($Model->find... 的返回值没有偏移0。 PHP 告诉我错误在该行而不是第 861 行似乎很奇怪,但我已经仔细检查过,这绝对是行。
谢谢
【问题讨论】:
-
如果它是 2.3 版 - 你为什么要标记它 cakephp-2.0 :P?树行为does not point at a line of code which can produce the undefined offset error 的第 865 行。未定义的偏移误差是关键,因为这就是中间值的来源。
-
嗯,2.0 是最接近的可用标签 :)。我已经用更多信息更新了我的问题
-
实际上,我的第 865 行似乎与该链接上的不同 - 我可能通过尝试从该文件中调试内容来更改行号。需要明确的是,我的问题中评论“这是第 865 行”的行是我的第 865 行:)
-
我认为您遇到了一些其他行为或功能干扰 - 该查询正在尝试查找之前立即保存但未找到的记录。查看它正在生成的 sql 查询并确定它为什么找不到具有给定主键的记录以继续。因为这不是一个可以简单回答的问题。
标签: cakephp tree cakephp-2.3