为什么CakePHP在引号中用'CURRENT_TIMESTAMP'形成INSERT语句?

时间:2011-08-04 06:01:38

标签: mysql cakephp

我收到此错误,因为cakephp 1.3.11在引号中创建了一个带有'CURRENT_TIMESTAMP'的INSERT语句。类似的事情在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

1 个答案:

答案 0 :(得分:2)

正如Dunhamzzz所说,必须有一个地方可以插入CURRENT_TIMESTAMP。

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

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