首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Yii ActiveRecord模型插入mysql表时出错

将Yii ActiveRecord模型插入mysql表时出错
EN

Stack Overflow用户
提问于 2012-07-13 22:13:49
回答 1查看 3.4K关注 0票数 4

我的网站上时不时会出现以下错误。

代码语言:javascript
复制
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)

基本上代码可以正常工作,并且它正确地保存了模型,我认为只有当它试图用相同的主键同时执行两次插入时才会出现这种错误,或者可能在插入之前没有确保关键字字段的唯一性。

在数据库中插入或更新关键字的脚本,代码如下:

代码语言:javascript
复制
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表如下所示:

代码语言:javascript
复制
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 ;

我在其他表中也遇到了这种错误,它们都是有很多行的表,并且主要用于统计数据。

事实是,我只能看到它不能插入,但没有像这样的错误:主键问题,服务非常忙或任何东西。

EN

回答 1

Stack Overflow用户

发布于 2012-07-16 22:10:31

试一试

代码语言:javascript
复制
var_dump($seo_keyword->getErrors());

之后

代码语言:javascript
复制
$seo_keyword->save();

并找出真正的问题是什么,这样插入查询就会失败。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11472235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档