我已经阅读了所有具有类似标题的问题,并认为这有些不同。
首先,我的代码(下方)是现有人员记录的更新。我根据条件更新了2个字段。完整的异常仅列出生成的SQL的一部分,并确实将其显示为更新查询。
这就是为什么我感到困惑,因为这不是一个列数问题,正如我所看到的那样。
代码:
if(<some condition>)) {
$user = Socialite::driver('linkedin')->user();
$person = Person::find($id);
$person->avatarURL = $user->avatar;
$person->updaterID = $id;
$person->save();
}
人员表中包含这两列。
完整的错误文字:
SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1
(SQL: update `person` set `avatarURL` = urltext, `updateDate` = 2017-07-19 15:02:28 where `personID` = 357)
现在,我知道上面的SQL在转储到查询编辑器时不会运行,因为没有引号,例如通常应该有。
我不确定为什么会以这种方式显示它。
我在同一个表上尝试了以下SQL并收到了同样的错误。
UPDATE `person` SET `midName`='blah' WHERE `personID`='357';
错误:
Operation failed: There was an error while applying the SQL script to the database.
ERROR 1136: 1136: Column count doesn't match value count at row 1
SQL Statement:
UPDATE `bl5hod18fm0zc1zh`.`person` SET `midName`='blah' WHERE `personID`='357'
最后,唯一可能相关的其他细节是这是heroku cedar-14堆栈上的JawsDB mysql实现。
答案 0 :(得分:0)
确定。这是一个棘手的问题,我已经解决了,而且我希望在未来的某个时间发布一个答案来保存某个人。希望如此。
问题是将人员记录保存到person_history表的触发器。尽管错误另有说明,但是对person_history表的插入失败了。