Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从MyISAM切换到InnoDB后,雄辩的save()不起作用_Php_Mysql_Laravel 4_Eloquent - Fatal编程技术网

Php 从MyISAM切换到InnoDB后,雄辩的save()不起作用

Php 从MyISAM切换到InnoDB后,雄辩的save()不起作用,php,mysql,laravel-4,eloquent,Php,Mysql,Laravel 4,Eloquent,我刚刚通过以下问题将MySQL数据库的所有表从MyISAM转换为InnoDB: ALTER TABLE month_fees ENGINE=InnoDB; 将表引擎转换为InnoDB之前,以下代码工作正常: $m = MonthFee::where('id', Input::get('h_mf_id'))->first(); $m->deposit_date = $data['depositDate']; $m->deposit_amount += $data['deposi

我刚刚通过以下问题将MySQL数据库的所有表从MyISAM转换为InnoDB:

ALTER TABLE month_fees ENGINE=InnoDB;
将表引擎转换为InnoDB之前,以下代码工作正常:

$m = MonthFee::where('id', Input::get('h_mf_id'))->first();
$m->deposit_date = $data['depositDate'];
$m->deposit_amount += $data['depositAmount'];
$m->relaxation += $data['relaxation'];
if($m->save()){
    Log::info('saved'.$m->deposit_date.'amount='.$m->deposit_amount);
}
但现在,它并没有更新数据库中的表。显然,雄辩/拉雷维尔没有给出错误。正如您在save()成功时看到的,我记录了一些变量,甚至这些值也记录在日志文件中

当我只将表引擎更改回MyISAM时,一切都开始正常工作

这里怎么了?

使用find()方法,而不是像这样使用where()

$m = MonthFee::find(Input::get('h_mf_id'));
$m->deposit_date = $data['depositDate'];
$m->deposit_amount += $data['depositAmount'];
$m->relaxation += $data['relaxation'];
if($m->save()){
    Log::info('saved'.$m->deposit_date.'amount='.$m->deposit_amount);
}
是的,我也用find()测试了它,但如果var_dump($m),就没有幸运了。我可以看到它正在从数据库中提取行。模型提取数据非常好,唯一的问题是使用save()记录您的查询,并查看是否可以在mysql shell或phpMyAdmin上正确执行
update
查询。也许问题不在于更换引擎,而在于同时发生的其他事情:)