2016-11-23 4 views
0

Выполнение следующего запросаСтранное обновление поведение заявление

UPDATE tbl_outcome SET `type` = 'do', `statement` = 'NAREs, private sector organizations and NGOs develop innovation platforms, disseminate market information to processors and develop their marketing skills', 
`actionsite_id` = 440, `code` = 'G&T-I' WHERE (outcome_id = '546'); 

вызовет эту ошибку

SQLSTATE[23000]: Integrity constraint violation: 
1062 Duplicate entry 'NAREs, private sector organizations and NGOs develop innovation ' for key 'statement' 

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

CREATE TABLE `tbl_outcome` (
     `outcome_id` int(11) NOT NULL AUTO_INCREMENT, 
     `type` varchar(2) NOT NULL, 
     `statement` varchar(255) DEFAULT NULL, 
     `actionsite_id` int(11) NOT NULL, 
     `code` varchar(10) DEFAULT NULL, 
     PRIMARY KEY (`outcome_id`), 
     UNIQUE KEY `statement` (`statement`,`actionsite_id`), 
     KEY `actionsite_id` (`actionsite_id`), 
     CONSTRAINT `tbl_outcome_ibfk_1` FOREIGN KEY (`actionsite_id`) REFERENCES `tbl_actionsite` (`actionsite_id`) ON UPDATE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=551 DEFAULT CHARSET=utf8; 

mysql> mysql> SELECT statement FROM crpcoreix.tbl_outcome limit 5; 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| statement                                                       | 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Female and male farmers/shakeholders use/adopt/implement methods/tools/approaches/technologies/NRMpractices/Varieties/framework/concepts                       | 
| Female and male farmers/stakeholders (inc.youth) awareness, skills and knowledge increased                                   | 
| Female and male farmers/stakeholders (inc.youth) awareness, skills and knowledge increased                                   | 
| Interventions better targeted/prioritized by stakeholders                                           | 
| At least (3-15?) potato candidate varieties (short season, heat tolerant, and pest/disease resistant) compatible with cereal crops: identified and recommended for release in at least three countries (China, Bangladesh, India) | 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
5 rows in set (0.00 sec) 
+0

'UNIQUE KEY' statement' ('statement',' actionsite_id'), ' –

+0

OMG, workbench не отмечен UQ для s tatment поле спасибо @SatwikNadkarny –

ответ

1

Потому что существует уникальное ограничение Key на Statement column:

UNIQUE KEY `statement` (`statement`,`actionsite_id`), 

Надеюсь, что это поможет !!!

+0

, но почему workbench не обозначает его как уникальное, а также так много строк содержит дублированные данные? –

+0

@SuhaybKharabsheh Не могли бы вы поделиться данными из таблицы, чтобы мы могли воспроизвести точный сценарий? –

+0

, пожалуйста, проверьте edit @Satwik Nadkarny –

0

Попробуйте

SHOW INDEX FROM tbl_outcome 

Это даст вам ИМЯ_ИНДЕКСА для уникального ключа

затем запустить следующий запрос

ALTER TABLE tbl_outcome DROP INDEX index_name 

Это удалит уникальный ключ Constraint

+0

Или, если вы используете верстак, затем нажмите на настройку таблицы и нажмите на вторую вкладку (индексы) там, там она покажет вам Уникальное ограничение ключа –

+0

индекс оператора имеет уникальный тип с привязкой буфера индексов и actionsite_id, удаление этого приведет к ошибке, поскольку уже есть дублированные данные –

Смежные вопросы