MariaDB:提交“INSERT IGNORE”时隐藏警告“重复条目”

时间:2017-04-14 10:19:25

标签: mysql mariadb

我正在使用MariaDB 5.5.54。

我必须使用许多“ INSERT IGNORE ”命令来总结我的数据。

当我提交“ INSERT IGNORE ”并且存在具有相同主键的行(或者,在某些情况下,存在多列的唯一键)时, “警告:......重复录入...... ” 节目。
在我的命令行程序执行时,上面的消息可能会显示数百万次。

如何隐藏此类警告消息?谢谢。

3 个答案:

答案 0 :(得分:0)

使用 ON DUPLICATE KEY UPDATE 隐藏警告,例如:

INSERT INTO `so` (id)
VALUES
    (6)
ON DUPLICATE KEY UPDATE  id = VALUES(id);

<强>样品

mysql> INSERT INTO `so` (id)
    -> VALUES
    ->     (6)
    -> ON DUPLICATE KEY UPDATE  id = VALUES(id);
Query OK, 0 rows affected (0,00 sec)

mysql> INSERT INTO `so` (id) VALUES (6);
ERROR 1062 (23000): Duplicate entry '6' for key 'PRIMARY'
mysql> INSERT IGNORE INTO `so` (id) VALUES (6);
Query OK, 0 rows affected, 1 warning (0,00 sec)

mysql> INSERT IGNORE INTO `so` (id) VALUES (6);
Query OK, 0 rows affected, 1 warning (0,00 sec)

mysql> INSERT INTO `so` (id) VALUES (6) ON DUPLICATE KEY UPDATE  id = VALUES(id);
Query OK, 0 rows affected (0,01 sec)

mysql>

答案 1 :(得分:0)

如果您正在“规范化”数百万行,并且许多行已经在表中,请考虑以下内容。以下代码运行得更快(因为它批处理)并且通过不尝试插入已存在的行来避免警告。它涉及2个查询,一个用于插入行,一个用于获取所有 ID。

详情为here

(注意:它包含IGNORE,但仅用于促进可能很少同时插入相同name'的多个线程。)

答案 2 :(得分:-4)

主键必须是唯一的。如果要允许重复数据,请删除列的主键。

Alter table yourtable drop index `yourprimarykey`;