2012-07-13 3 views
3

다음과 같은 종류의 오류가 내 웹 사이트에서 수시 발생합니다.Yii ActiveRecord 모델을 mysql 테이블에 삽입 할 때 오류가 발생했습니다.

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) 

기본적으로 코드가 작동, 그리고, 나는 동일한 기본 키를 사용하여 동시에 두 개의 삽입을하려고 할 때 난 단지 오류의 종류를 얻을 생각, 또는 어쩌면 아무튼 올바르게 모델을 저장 삽입하기 전에 키워드 입력란의 고유성을 확인하십시오.

가 삽입하거나 데이터베이스의 키워드를 업데이트 할 soposed되는 스크립트 코드는 다음과 같다 :

MySQL의 테이블은 다음과 같습니다
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; 
} 

: 나는 또한 얻고

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 ; 

이러한 종류의 다른 테이블과의 오류는 모두 행이 많고 주로 통계 데이터에 사용되는 테이블입니다.

사실 내가 삽입 할 수 없다는 것을 알 수 있지만 기본 키 문제, servery busy 또는 기타와 같은 오류는 없습니다.

+1

'키워드'의 고유 키입니다. 이것이 원인입니다. – Pentium10

답변

3

$seo_keyword->save(); 

var_dump($seo_keyword->getErrors()); 

을 시도하고 삽입 쿼리가 실패 할 수 있도록 실제 문제가 무엇인지 전망대.

관련 문제