Ошибка: нарушение ограничения целостности: столбец 1052

почему я получаю это?

Ошибка: SQLSTATE [23000]: нарушение ограничения целостности: 1052 Столбец «избранное» в списке полей неоднозначен

SQL Query: UPDATE `twitter`.`tractions` AS `Traction` LEFT JOIN `twitter`.`profiles` AS `Profile` ON (`Traction`.`profile_id` = `Profile`.`id`) SET `Traction`.`favorites` = `favorites` + 1, `Traction`.`errors` = `errors` + 0 WHERE `Traction`.`profile_id` = 4 AND `Traction`.`date` = '2013-01-11'

Код CakePHP:

$this->Traction->updateAll(array(
                "Traction.favorites"=>"`favorites` + $favorites",
                "Traction.errors"=>"`errors` + $errors"
                ), array(
                'Traction.profile_id'=>$profile['Profile']['id'],
                'Traction.date'=>date('Y-m-d')
            ));

- Структура таблицы для таблицы tractions

CREATE TABLE IF NOT EXISTS `tractions` (
  `id` int(10) NOT NULL auto_increment,
  `date` date default NULL,
  `profile_id` int(10) default NULL,
  `followings` int(10) default '0',
  `unfollowings` int(10) default '0',
  `favorites` int(10) default '0',
  `retweets` int(10) default '0',
  `thanks` int(10) default '0',
  `errors` int(10) default '0',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

person Gediminas    schedule 11.01.2013    source источник


Ответы (2)


вам нужно указать tableName, поскольку несколько таблиц содержат одно и то же имя столбца,

"Traction.favorites"=>"Traction.`favorites` + $favorites"
person John Woo    schedule 11.01.2013

Очевидно, обе таблицы содержат столбец favorites, может также содержать столбец errors

Поскольку вы присоединяетесь ко второй таблице, вы, вероятно, захотите установить Traction.favorites = Profile.favorites + $favorites и Traction.errors = Profile.errors + $errors

По словам JW. вам нужно использовать полный идентификатор

person Michel Feldheim    schedule 11.01.2013