ON DUPLICATE KEY UPDATE отказывается обновлять - PullRequest
0 голосов
/ 03 марта 2012

Возникли проблемы с ON DUPLICATE KEY UPDATE в MySQL. Ниже приведен запрос, который я пытаюсь выполнить.

INSERT INTO `Overall` ( `rsn` , `starting_xp` , `starting_lvl` ) VALUES ( 'iWader' , '195843626' , '2281' ) ON DUPLICATE KEY UPDATE `current_xp` = '195843626' AND `current_lvl` = '2281'
  • Вставляется нормально, но при наличии дубликата не обновляется и не выдает никаких ошибок.
  • Выполнение запроса через PMA не возвращает ошибку и не обновляет
  • Удаление раздела ON DUPLICATE KEY UPDATE возвращает ошибку дублированного ключа

Это структура моей таблицы

CREATE TABLE IF NOT EXISTS `overall` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rsn` varchar(12) NOT NULL,
  `starting_xp` int(10) unsigned NOT NULL,
  `starting_lvl` int(10) unsigned NOT NULL,
  `current_xp` int(10) unsigned NOT NULL,
  `current_lvl` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `rsn` (`rsn`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

Ответы [ 2 ]

1 голос
/ 03 марта 2012

После ON DUPLICATE KEY UPDATE вам не нужно использовать and с полями, используйте , вместо.

ON DUPLICATE KEY UPDATE `current_xp` = '195843626', `current_lvl` = '2281'
1 голос
/ 03 марта 2012

Попробуйте это:

INSERT INTO `Overall` ( `rsn` , `starting_xp` , `starting_lvl` ) VALUES ( 'iWader' , '195843626' , '2281' ) ON DUPLICATE KEY UPDATE `current_xp` = '195843626', `current_lvl` = '2281';

AND в вашем предложении UPDATE неверно. AND используется в логических выражениях как "foo true AND bar true?" Здесь вы хотите обновить столбец current_xp, current_lvl.

...