我收到此错误,因为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
答案 0 :(得分:2)
正如Dunhamzzz所说,必须有一个地方可以插入CURRENT_TIMESTAMP。
找到后,您可以使用date('Y-m-d H:i:s')
使用当前时间进行保存。
或者,如果您想使用SQL执行此操作,则可以使用DboSource::expression('NOW()')
。
即
array('MyTable'=>array('time_posted' => DboSource::expression('NOW()')))