Mysql 为什么CakePHP表单插入带有';当前时间戳';引用?

Mysql 为什么CakePHP表单插入带有';当前时间戳';引用?,mysql,cakephp,Mysql,Cakephp,我得到了这个错误,因为CakePHP1.3.11创建了一个INSERT语句,在引号中加上“CURRENT_TIMESTAMP”。类似的事情在1.3.9中也起了作用。我可能做错了什么 SQL Error: 1292: Incorrect datetime value: 'CURRENT_TIMESTAMP' for column 'time_posted' at row 1 [CORE\cake\libs\model\datasources\dbo_source.php, line 684]

我得到了这个错误,因为CakePHP1.3.11创建了一个INSERT语句,在引号中加上“CURRENT_TIMESTAMP”。类似的事情在1.3.9中也起了作用。我可能做错了什么

 SQL Error: 1292: Incorrect datetime value: 'CURRENT_TIMESTAMP' for column 'time_posted' at row 1 [CORE\cake\libs\model\datasources\dbo_source.php, line 684]
这是上下文查询:

$sql    =   "INSERT INTO `my_table` (`time_posted`, `version`, `provider`, `date`) VALUES ('CURRENT_TIMESTAMP', 0, 'provider', '2011-08-03 16:11:00')"
我正试图使用以下代码从cakephp在数据库中创建一个新记录:

class MyTable extends AppModel
{
...
function blah() {
...
$this->create()
$ret=$this->save(array('MyTable'=>array('provider'=>$provider,'date'=>$datetime)));
...
这是堆栈:

DboSource::showQuery() - CORE\cake\libs\model\datasources\dbo_source.php, line 684
DboSource::execute() - CORE\cake\libs\model\datasources\dbo_source.php, line 266
DboSource::create() - CORE\cake\libs\model\datasources\dbo_source.php, line 752
Model::save() - CORE\cake\libs\model\model.php, line 1342
MyTable::add() - APP\models\my_table.php, line 1288

正如Dunhamzzz所说,必须有一个地方导致插入当前的时间戳

找到后,可以使用
date('Y-m-dh:i:s')
使用当前时间进行保存。 或者,如果您想使用SQL执行此操作,可以使用
DboSource::expression('NOW()')


array('MyTable'=>array('time_posted'=>DboSource::expression('NOW()'))

我认为您需要显示导致插入当前时间戳的原因,因为它不在您的
save()
调用中,并且必须在其他地方添加。Cakephp现在将模式中的默认值()转换为“CURRENT_TIMESTAMP”。现在我认为这是一个bug:CakePHP应该分配DboSource::expression('CURRENT_TIMESTAMP')谢谢,'time_posted'=>DboSource::expression('Now()')起作用了。发布的时间在方案中具有默认值=NOW()。我没有找到位置,但cakephp正在分配并保留“CURRENT_TIMESTAMP”作为该字段的默认值。在save()期间,所有字段都显式设置为默认值,这会导致此情况。这看起来像是CakePHP中的一个bug:他们应该将DboSource::expression('CURRENT_TIMESTAMP')指定给默认值,而不是指定'CURRENT_TIMESTAMP'。另外,在create()之后似乎没有必要在save()中指定默认值,因为MySQL无论如何都会指定它们!你应该在上提交一个bug