4

私のウェブサイトで時々発生する次のようなエラーがあります。

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)

基本的にコードは機能し、モデルを正しく保存します。この種のエラーは、同じ主キーで同時に 2 つの挿入を実行しようとした場合にのみ発生すると思います。挿入する前のキーワード フィールド。

データベースにキーワードを挿入または更新するスクリプトです。コードは次のようになります。

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 ;

他のテーブルでもこの​​種のエラーが発生しています。それらはすべて、多くの行があり、主に統計データに使用されるテーブルです。

実際には、挿入できなかったことしかわかりませんが、主キーの問題、サーバーがビジーなどのエラーはありません。

4

1 に答える 1

4

試す

var_dump($seo_keyword->getErrors());

$seo_keyword->save();

挿入クエリが失敗するように、実際の問題は何かを調べてください。

于 2012-07-16T14:10:31.480 に答える