MariaDB:在提交 "INSERT IGNORE" 时隐藏警告 "Duplicate entry"
MariaDB: Hide Warning "Duplicate entry" while commit "INSERT IGNORE"
我正在使用 MariaDB 5.5.54。
我必须使用许多“INSERT IGNORE”命令来总结我的数据。
当我提交“INSERT IGNORE”并且存在具有相同主键(或者,在某些情况下,多列的唯一键)的行时,
“警告:......重复条目......”
显示。
当我的命令行程序正在执行时,上面的消息可能会显示一百万次。
如何隐藏这种类型的警告信息?谢谢。
主键必须是唯一的。如果要允许重复数据删除列的主键。
Alter table yourtable drop index `yourprimarykey`;
使用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>
如果您有 "normalizing" 百万行,并且许多行已经在 table 中,请考虑以下内容。下面的代码运行得更快(因为它是批处理的)并且通过不尝试插入已经存在的行来避免警告。它涉及 2 个查询,一个用于插入 new 行,一个用于获取 all ids.
详情为here。
(注意:它包括IGNORE
,但只是为了方便可能很少插入相同name
'simultaneously'的多个线程。)
我正在使用 MariaDB 5.5.54。
我必须使用许多“INSERT IGNORE”命令来总结我的数据。
当我提交“INSERT IGNORE”并且存在具有相同主键(或者,在某些情况下,多列的唯一键)的行时,
“警告:......重复条目......”
显示。
当我的命令行程序正在执行时,上面的消息可能会显示一百万次。
如何隐藏这种类型的警告信息?谢谢。
主键必须是唯一的。如果要允许重复数据删除列的主键。
Alter table yourtable drop index `yourprimarykey`;
使用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>
如果您有 "normalizing" 百万行,并且许多行已经在 table 中,请考虑以下内容。下面的代码运行得更快(因为它是批处理的)并且通过不尝试插入已经存在的行来避免警告。它涉及 2 个查询,一个用于插入 new 行,一个用于获取 all ids.
详情为here。
(注意:它包括IGNORE
,但只是为了方便可能很少插入相同name
'simultaneously'的多个线程。)