我不时在我的网站上发生以下类型的错误.
2012/07/12 21:21:48 [error] [system.db.CDbCommand] Error in executing
sql: INSERT INTO `SEO_page` (`grouped`, `results_count`, `page`, `operation`, `subtype`, `type`, `state`, `zone`, `city`, `district`, `custom`, `property`, `date_add`, `date_upd`) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6, :yp7, :yp8, :yp9, :yp10, :yp11, :yp12, :yp13)
基本上代码是有效的,并且它正确地保存了模型,我想我只是在尝试使用相同的主键同时进行两次插入时才会遇到这种错误,或者它可能无法确保其唯一性插入前的关键字字段.
static public function quickAdd($keyword) {
if (strlen($keyword['name'])==0)
return;
$SEO_keyword = SEOKeyword::model()->find("keyword=:keyword", array("keyword"=>$keyword['name']));
if ($SEO_keyword) {
// return;
} else {
$SEO_keyword=new SEOKeyword();
}
$SEO_keyword->keyword=$keyword['name'];
if (is_numeric($keyword['position'])) {
$SEO_keyword->position=$keyword['position'];
}
try {
$SEO_keyword->save();
} catch (Exception $e) {
}
return $SEO_keyword;
}
MysqL表看起来像这样:
CREATE TABLE IF NOT EXISTS `SEO_keyword` (
`id_SEO_keyword` int(11) NOT NULL AUTO_INCREMENT,
`keyword` varchar(255) NOT NULL,
`position` int(11) DEFAULT NULL,
`date_add` datetime NOT NULL,
`date_upd` datetime NOT NULL,
PRIMARY KEY (`id_SEO_keyword`),
UNIQUE KEY `keyword` (`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
我也遇到了其他表的这种错误,所有这些表都是有很多行的表,主要用于统计数据.
事实是,我只能看到它无法插入,但没有错误,如:主键问题,服务繁忙或任何事情.
解决方法:
尝试
var_dump($SEO_keyword->getErrors());
后
$SEO_keyword->save();
并了解实际问题是什么,以便插入查询失败.