MySQL - игнорирует, вставляют ошибку: дублирующаяся запись

Как уже сказал Торек , первым ключевым моментом является обрезка веток удаленного отслеживания , чтобы убедиться, что вы сравниваете со свежим списком ссылок. Вы можете использовать

git fetch --prune

, затем определить локальные «оставшиеся» ветви с помощью:

 git for-each-ref --format='%(if)%(upstream:short)%(then)%(else)%(color:bold red)%(end)%(refname:short)' refs/heads

(они будут выделены красным на выходе) [118 ]

или альтернативно (при условии, что ваш пульт называется origin):

git branch -vv | grep -v origin/

... и последний этап состоит в том, чтобы вручную удалить их с помощью

[113 ]

Поскольку они отображаются просто под рукой, вы не должны страдать больше, чем за пару копий / вставок. Если число устаревших ветвей регулярно огромно или, скажем, достаточно важно, то может быть что-то в рабочем процессе можно было бы внедрить, чтобы избежать повторяющейся ситуации?

74
задан bakkal 10 August 2010 в 08:19
поделиться

5 ответов

Как выглядит схема базы данных?

Вы можете добавить столбец идентификатора, который будет автоматически увеличивать для каждой вставки, чтобы гарантировать уникальные строки.

Вы можете использовать синтаксис REPLACE INTO , если хотите перезаписать старую запись новой с тем же ключом.

Или вы можете использовать INSERT ... ON DUPLICATE KEY ОБНОВИТЬ Синтаксис , если вы хотите выполнить обновление записи вместо того, чтобы встретить дубликат.

Редактировать: Я хотел бы добавить несколько примеров.

Примеры

Скажем, у вас есть таблица с именем tbl с двумя столбцами, id и значение . Есть одна запись, id = 1 и значение = 1. Если вы выполняете следующие операторы:

REPLACE INTO tbl VALUES(1,50);

У вас все еще есть одна запись с id = 1, значением = 50. Обратите внимание, что вся запись сначала была УДАЛЕНА, а затем снова вставлена. Затем:

INSERT IGNORE INTO tbl VALUES (1,10);

Операция выполняется успешно, но ничего не вставлено. У вас все еще есть id = 1 и значение = 50. Наконец:

INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

Теперь у вас есть одна запись с id = 1 и значением = 200.

159
ответ дан 24 November 2019 в 11:57
поделиться

What does the database schema look like?

You could add an ID column which will auto increment for each insert, to guarantee unique rows.

-1
ответ дан 3 July 2019 в 13:44
поделиться
-2
ответ дан 24 November 2019 в 11:57
поделиться

Попробуйте создать дублирующуюся таблицу, предпочтительно временную таблицу, без ограничения уникальности и выполните массовую загрузку в эту таблицу. Затем выберите только уникальные (DISTINCT) элементы из временной таблицы и вставьте в целевую таблицу.

-3
ответ дан 24 November 2019 в 11:57
поделиться

You can make sure that you do not insert duplicate information by using the EXISTS condition.

For example, if you had a table named clients with a primary key of client_id, you could use the following statement:

INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE not exists (select * from clients
where clients.client_id = suppliers.supplier_id);

This statement inserts multiple records with a subselect.

If you wanted to insert a single record, you could use the following statement:

INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where clients.client_id = 10345);

The use of the dual table allows you to enter your values in a select statement, even though the values are not currently stored in a table.

from http://www.techonthenet.com/sql/insert.php

-1
ответ дан 24 November 2019 в 11:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: